Completed
Push — develop ( 9259d7...818a8c )
by Abdelrahman
01:45
created

RolePolicy::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 2
dl 0
loc 4
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cortex\Fort\Policies;
6
7
use Rinvex\Fort\Models\Role;
8
use Rinvex\Fort\Models\User;
9
use Illuminate\Auth\Access\HandlesAuthorization;
10
11
class RolePolicy
12
{
13
    use HandlesAuthorization;
14
15
    /**
16
     * Determine whether the user can list roles.
17
     *
18
     * @param string                   $ability
19
     * @param \Rinvex\Fort\Models\User $user
20
     *
21
     * @return bool
22
     */
23
    public function list($ability, User $user): bool
24
    {
25
        return $user->allAbilities->pluck('slug')->contains($ability);
26
    }
27
28
    /**
29
     * Determine whether the user can create roles.
30
     *
31
     * @param string                   $ability
32
     * @param \Rinvex\Fort\Models\User $user
33
     *
34
     * @return bool
35
     */
36
    public function create($ability, User $user): bool
37
    {
38
        return $user->allAbilities->pluck('slug')->contains($ability);
39
    }
40
41
    /**
42
     * Determine whether the user can update the role.
43
     *
44
     * @param string                   $ability
45
     * @param \Rinvex\Fort\Models\User $user
46
     * @param \Rinvex\Fort\Models\Role $resource
47
     *
48
     * @return bool
49
     */
50
    public function update($ability, User $user, Role $resource): bool
51
    {
52
        return $user->allAbilities->pluck('slug')->contains($ability)           // User can update roles
53
               && $user->hasAnyRoles($resource)                                 // User already have RESOURCE role
54
               && ! $resource->isSuperadmin()                                   // RESOURCE role is NOT superadmin
55
               && ! $resource->isProtected();                                   // RESOURCE role is NOT protected
56
    }
57
58
    /**
59
     * Determine whether the user can delete the role.
60
     *
61
     * @param string                   $ability
62
     * @param \Rinvex\Fort\Models\User $user
63
     * @param \Rinvex\Fort\Models\Role $resource
64
     *
65
     * @return bool
66
     */
67
    public function delete($ability, User $user, Role $resource): bool
68
    {
69
        return $resource->abilities->isEmpty()                                  // RESOURCE role has no abilities attached
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 122 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
70
               && $resource->users->isEmpty()                                   // RESOURCE role has no users attached
71
               && $user->allAbilities->pluck('slug')->contains($ability)        // User can delete roles
72
               && $user->allAbilities->pluck('slug')->contains($resource->slug) // User already have RESOURCE role
73
               && ! $resource->isSuperadmin()                                   // RESOURCE role is NOT superadmin
74
               && ! $resource->isProtected();                                   // RESOURCE role is NOT protected
75
    }
76
77
    /**
78
     * Determine whether the user can assign the given role to the given user.
79
     *
80
     * @param string                   $ability
81
     * @param \Rinvex\Fort\Models\User $user
82
     * @param \Rinvex\Fort\Models\Role $resource
83
     * @param \Rinvex\Fort\Models\User $resourced
84
     *
85
     * @return bool
86
     */
87
    public function assign($ability, User $user, Role $resource, User $resourced): bool
88
    {
89
        return $user->allAbilities->pluck('slug')->contains($ability)           // User can assign roles
90
               && $user->allAbilities->pluck('slug')->contains($resource->slug) // User already have RESOURCE role
91
               && ! $resourced->isSuperadmin()                                  // RESOURCED user is NOT superadmin
92
               && ! $resourced->isProtected();                                  // RESOURCED user is NOT protected
93
    }
94
}
95