InsertRolesAndPermissions   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 3
dl 0
loc 63
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B handle() 0 41 5
1
<?php
2
3
namespace Yard8\LaravelPermissions\Console;
4
5
6
use Yard8\LaravelPermissions\Models\Permission;
7
use Yard8\LaravelPermissions\Models\Role;
8
use Illuminate\Console\Command;
9
10
class InsertRolesAndPermissions extends Command
11
{
12
    /**
13
     * The name and signature of the console command.
14
     *
15
     * @var string
16
     */
17
    protected $signature = 'laravel-permissions:insert';
18
19
    /**
20
     * The console command description.
21
     *
22
     * @var string
23
     */
24
    protected $description = 'Insert all the roles and permissions into the database.';
25
26
    /**
27
     * Execute the console command.
28
     *
29
     * @return void
30
     */
31
    public function handle()
32
    {
33
        $this->info('Inserting roles...');
34
35
        $roles = config('permissions.roles');
36
37
        Role::insert($roles);
38
39
        $this->info('Inserting permissions...');
40
41
        $permissions = [];
42
        $permissionsByGroup = config('permissions.permissions');
43
44
        foreach ($permissionsByGroup as $group => $groupOfPermissions) {
45
            foreach ($groupOfPermissions as $permission) {
46
                $permissions[] = [
47
                    'id' => $permission,
48
                    'group' => $group
49
                ];
50
            }
51
        }
52
53
        Permission::insert($permissions);
54
55
        $this->info('Inserting defaults for each role...');
56
57
        $allRoles = Role::all();
58
        $allPermissions = Permission::all();
59
        $defaultPermissions = config('permissions.defaults');
60
61
        foreach ($defaultPermissions as $roleName => $permissionsForRole) {
62
            $role = $allRoles->where('name', $roleName)->first();
63
64
            if ($role) {
65
                $permissionsToSync = $allPermissions->find($permissionsForRole);
66
                $role->permissions()->sync($permissionsToSync);
67
            }
68
        }
69
70
        $this->info('Inserts complete!');
71
    }
72
}
73