helpers.php ➔ initialize_users_management_permissions()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 70
Code Lines 49

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 49
nc 1
nop 0
dl 0
loc 70
rs 9.1724
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
use Spatie\Permission\Exceptions\PermissionAlreadyExists;
4
use Spatie\Permission\Exceptions\RoleAlreadyExists;
5
use Spatie\Permission\Models\Permission;
6
use Spatie\Permission\Models\Role;
7
use Spatie\Permission\PermissionRegistrar;
8
9
if (! function_exists('role_first_or_create')) {
10
    /**
11
     * Create  role by name or retrieve role if already exists.
12
     * @param $role
13
     * @return \Illuminate\Database\Eloquent\Model|\Spatie\Permission\Contracts\Role|Role
14
     */
15
    function role_first_or_create($role)
16
    {
17
        try {
18
            return Role::create(['name' => $role]);
19
        } catch (RoleAlreadyExists $e) {
20
            return Role::findByName($role);
21
        }
22
    }
23
}
24
25
if (! function_exists('permission_first_or_create')) {
26
    /**
27
     * Create permission by name or retrieve permission if already exists.
28
     *
29
     * @param $permission
30
     * @return \Illuminate\Database\Eloquent\Model|\Spatie\Permission\Contracts\Permission
31
     */
32
    function permission_first_or_create($permission)
33
    {
34
        try {
35
            return Permission::create(['name' => $permission]);
36
        } catch (PermissionAlreadyExists $e) {
37
            return Permission::findByName($permission);
38
        }
39
    }
40
}
41
42
if (! function_exists('give_permission_to_role')) {
43
    function give_permission_to_role($role,$permission)
44
    {
45
        try {
46
            $role->givePermissionTo($permission);
47
        } catch (Illuminate\Database\QueryException $e) {
48
            info('Permissions ' . $permission . ' already assigned to role ' . $role->name);
49
        }
50
    }
51
}
52
53
if (! function_exists('initialize_users_management_permissions')) {
54
    function initialize_users_management_permissions()
55
    {
56
        $manageUsers = role_first_or_create('manage-users');
57
58
        //USERS
59
        permission_first_or_create('see-manage-users-view');
60
        permission_first_or_create('list-users');
61
        permission_first_or_create('create-users');
62
        permission_first_or_create('view-users');
63
        permission_first_or_create('edit-users');
64
        permission_first_or_create('delete-users');
65
        permission_first_or_create('massive-delete-users');
66
        permission_first_or_create('subscribe-to-users-broadcast-channel');
67
68
        give_permission_to_role($manageUsers,'see-manage-users-view');
69
        give_permission_to_role($manageUsers,'list-users');
70
        give_permission_to_role($manageUsers,'create-users');
71
        give_permission_to_role($manageUsers,'view-users');
72
        give_permission_to_role($manageUsers,'edit-users');
73
        give_permission_to_role($manageUsers,'delete-users');
74
        give_permission_to_role($manageUsers,'massive-delete-users');
75
        give_permission_to_role($manageUsers,'subscribe-to-users-broadcast-channel');
76
77
        //USER INVITATIONS
78
        permission_first_or_create('see-manage-user-invitations-view');
79
        permission_first_or_create('list-user-invitations');
80
        permission_first_or_create('send-user-invitations');
81
        //TODO diferences between send and create user invitations?
82
        //permission_first_or_create('create-user-invitations');
83
        permission_first_or_create('view-user-invitations');
84
        permission_first_or_create('edit-user-invitations');
85
        permission_first_or_create('delete-user-invitations');
86
87
        give_permission_to_role($manageUsers,'see-manage-user-invitations-view');
88
        give_permission_to_role($manageUsers,'list-user-invitations');
89
        give_permission_to_role($manageUsers,'send-user-invitations');
90
        give_permission_to_role($manageUsers,'view-user-invitations');
91
        give_permission_to_role($manageUsers,'edit-user-invitations');
92
        give_permission_to_role($manageUsers,'delete-user-invitations');
93
94
        //USERS DASHBOARD
95
        permission_first_or_create('see-users-dashboard');
96
        give_permission_to_role($manageUsers,'see-users-dashboard');
97
98
        //USERS TRACKING
99
        permission_first_or_create('track-users');
100
        permission_first_or_create('see-users-tracking');
101
        give_permission_to_role($manageUsers,'track-users');
102
        give_permission_to_role($manageUsers,'see-users-tracking');
103
104
        //USERS PROFILE
105
        permission_first_or_create('see-other-users-profile');
106
        give_permission_to_role($manageUsers,'see-other-users-profile');
107
108
        //USERS REST PASSWORD EMAIL
109
        permission_first_or_create('reset-user-password');
110
        give_permission_to_role($manageUsers,'reset-user-password');
111
112
        //Google apps users
113
        permission_first_or_create('see-google-apps-users');
114
        permission_first_or_create('check-google-apps-connection');
115
        permission_first_or_create('list-google-apps-users');
116
        permission_first_or_create('sync-google-apps-users');
117
        give_permission_to_role($manageUsers,'see-google-apps-users');
118
        give_permission_to_role($manageUsers,'check-google-apps-connection');
119
        give_permission_to_role($manageUsers,'list-google-apps-users');
120
        give_permission_to_role($manageUsers,'sync-google-apps-users');
121
        app(PermissionRegistrar::class)->registerPermissions();
122
123
    }
124
}
125
126