Completed
Push — master ( f8f0f3...173874 )
by Andrey
01:42
created

RoleSeeder   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 1
dl 0
loc 78
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createRecord() 0 9 1
A run() 0 54 1
1
<?php
2
3
use Illuminate\Database\Seeder;
4
use Itstructure\LaRbac\Models\{Role, Permission};
5
6
/**
7
 * Class RoleSeeder
8
 *
9
 * @author Andrey Girnik <[email protected]>
10
 */
11
class RoleSeeder extends Seeder
12
{
13
    /**
14
     * Run the database seeds.
15
     * @return void
16
     */
17
    public function run()
18
    {
19
        $totalPermissionId   = Permission::where('slug', Permission::ADMINISTRATE_PERMISSION)->firstOrFail()->id;
20
        $viewPermissionId    = Permission::where('slug', Permission::VIEW_RECORD_PERMISSION)->firstOrFail()->id;
21
        $createPermissionId  = Permission::where('slug', Permission::CREATE_RECORD_PERMISSION)->firstOrFail()->id;
22
        $updatePermissionId  = Permission::where('slug', Permission::UPDATE_RECORD_PERMISSION)->firstOrFail()->id;
23
        $deletePermissionId  = Permission::where('slug', Permission::DELETE_RECORD_PERMISSION)->firstOrFail()->id;
24
        $publishPermissionId = Permission::where('slug', Permission::PUBLISH_RECORD_PERMISSION)->firstOrFail()->id;
25
26
        $this->createRecord(
27
            Role::ADMIN_ROLE,
28
            'Administrator',
29
            [
30
                $totalPermissionId,
31
                $viewPermissionId,
32
                $createPermissionId,
33
                $updatePermissionId,
34
                $deletePermissionId,
35
                $publishPermissionId
36
            ]
37
        );
38
39
        $this->createRecord(
40
            Role::MANAGER_ROLE,
41
            'Content manager',
42
            [
43
                $viewPermissionId,
44
                $createPermissionId,
45
                $updatePermissionId,
46
                $deletePermissionId,
47
                $publishPermissionId
48
            ]
49
        );
50
51
        $this->createRecord(
52
            Role::EDITOR_ROLE,
53
            'Record editor',
54
            [
55
                $viewPermissionId,
56
                $createPermissionId,
57
                $updatePermissionId,
58
                $deletePermissionId,
59
                $publishPermissionId
60
            ]
61
        );
62
63
        $this->createRecord(
64
            Role::USER_ROLE,
65
            'Simple user',
66
            [
67
                $viewPermissionId
68
            ]
69
        );
70
    }
71
72
    /**
73
     * Create role record in database.
74
     * @param string $slug
75
     * @param string $description
76
     * @param array $permissions
77
     * @return void
78
     */
79
    private function createRecord(string $slug, string $description, array $permissions): void
80
    {
81
        Role::create([
82
            'name' => ucfirst($slug),
83
            'slug' => $slug,
84
            'description' => $description,
85
        ])->permissions()
86
            ->attach($permissions);
87
    }
88
}
89