Completed
Push — master ( 81e1a1...0dbe46 )
by ARCANEDEV
30:13
created

RolesTableSeeder   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 1
cbo 5
dl 0
loc 50
ccs 0
cts 26
cp 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A run() 0 13 1
A syncRoles() 0 17 2
1
<?php namespace Arcanesoft\Foundation\Seeds;
2
3
use Arcanesoft\Auth\Models\Role;
4
use Arcanesoft\Auth\Models\Permission;
5
use Arcanesoft\Auth\Seeds\RolesSeeder;
6
7
/**
8
 * Class     RoleTableSeeder
9
 *
10
 * @package  Arcanesoft\Auth\Seeds\Foundation
11
 * @author   ARCANEDEV <[email protected]>
12
 */
13
class RolesTableSeeder extends RolesSeeder
14
{
15
    /* ------------------------------------------------------------------------------------------------
16
     |  Main Functions
17
     | ------------------------------------------------------------------------------------------------
18
     */
19
    /**
20
     * Run the database seeds.
21
     */
22
    public function run()
23
    {
24
        $this->seed([
25
            [
26
                'name'        => 'LogViewer Manager',
27
                'description' => 'The LogViewer manager role.',
28
                'is_locked'   => true,
29
            ]
30
        ]);
31
32
        $this->syncAdminRole();
33
        $this->syncRoles();
34
    }
35
36
    /* ------------------------------------------------------------------------------------------------
37
     |  Other Functions
38
     | ------------------------------------------------------------------------------------------------
39
     */
40
    /**
41
     * Sync the roles.
42
     *
43
     * @todo: Refactor this method
44
     */
45
    private function syncRoles()
46
    {
47
        $permissions = Permission::all();
48
        $roles       = [
49
            'logviewer-manager' => 'foundation.logviewer.'
50
        ];
51
52
        foreach ($roles as $roleSlug => $permissionSlug) {
53
            /** @var  \Arcanesoft\Auth\Models\Role  $role */
54
            $role = Role::where('slug', $roleSlug)->first();
55
            $ids  = $permissions->filter(function (Permission $permission) use ($permissionSlug) {
56
                return starts_with($permission->slug, $permissionSlug);
57
            })->lists('id')->toArray();
58
59
            $role->permissions()->sync($ids);
60
        }
61
    }
62
}
63