Completed
Pull Request — master (#6)
by ARCANEDEV
06:12
created

RolesTableSeeder::syncRoles()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 0
cts 11
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 8
nc 2
nop 1
crap 6
1
<?php namespace Arcanesoft\Media\Seeds;
2
3
use Arcanesoft\Auth\Models\Permission;
4
use Arcanesoft\Auth\Models\Role;
5
use Arcanesoft\Auth\Seeds\RolesSeeder;
6
use Illuminate\Support\Str;
7
8
/**
9
 * Class     RolesTableSeeder
10
 *
11
 * @package  Arcanesoft\Media\Seeds
12
 * @author   ARCANEDEV <[email protected]>
13
 */
14
class RolesTableSeeder extends RolesSeeder
15
{
16
    /* -----------------------------------------------------------------
17
     |  Main Methods
18
     | -----------------------------------------------------------------
19
     */
20
21
    /**
22
     * Run the database seeds.
23
     */
24
    public function run()
25
    {
26
        $this->seed([
27
            [
28
                'name'        => 'Medias Manager',
29
                'description' => 'The Medias manager role.',
30
                'is_locked'   => true,
31
            ],
32
        ]);
33
34
        $this->syncAdminRole();
35
36
        $this->syncRoles([
37
            'medias-manager' => 'media.medias.',
38
        ]);
39
    }
40
41
    /* -----------------------------------------------------------------
42
     |  Other Methods
43
     | -----------------------------------------------------------------
44
     */
45
46
    /**
47
     * Sync the roles.
48
     *
49
     * @todo: Refactor this method
50
     *
51
     * @param  array  $roles
52
     */
53
    protected function syncRoles(array $roles)
54
    {
55
        /** @var \Illuminate\Database\Eloquent\Collection $permissions */
56
        $permissions = Permission::all();
57
58
        foreach ($roles as $roleSlug => $permissionSlug) {
59
            /** @var  \Arcanesoft\Auth\Models\Role  $role */
60
            $role = Role::where('slug', $roleSlug)->first();
61
            $ids  = $permissions->filter(function (Permission $permission) use ($permissionSlug) {
62
                return Str::startsWith($permission->slug, $permissionSlug);
63
            })->pluck('id')->toArray();
64
65
            $role->permissions()->sync($ids);
66
        }
67
    }
68
}
69