Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 22
0.00% covered (danger)
0.00%
0 / 9
CRAP
0.00% covered (danger)
0.00%
0 / 1
UserPolicy
0.00% covered (danger)
0.00%
0 / 22
0.00% covered (danger)
0.00%
0 / 9
506
0.00% covered (danger)
0.00%
0 / 1
 viewAny
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 view
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
 create
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 update
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 delete
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 restore
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 forceDelete
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 duplicate
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 changePublished
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace App\Policies;
4
5use App\Enums\Users\RoleEnum;
6use App\Models\User;
7use App\Policies\Rules\UserStaticRules;
8
9class UserPolicy
10{
11    /**
12     * Determine whether the user can view any models.
13     *
14     * @param \App\Models\User $authUser
15     * @return boolean
16     */
17    public function viewAny(User $authUser): bool
18    {
19        return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
20    }
21
22    /**
23     * Determine whether the user can view the model.
24     *
25     * @param \App\Models\User $authUser
26     * @param \App\Models\User $user
27     * @return boolean
28     */
29    public function view(User $authUser, User $user): bool
30    {
31        return UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
32            UserStaticRules::atLeastRole($authUser, $user->role);
33    }
34
35    /**
36     * Determine whether the user can create models.
37     *
38     * @param \App\Models\User $authUser
39     * @return boolean
40     */
41    public function create(User $authUser): bool
42    {
43        return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
44    }
45
46    /**
47     * Determine whether the user can update the model.
48     *
49     * @param \App\Models\User $authUser
50     * @param \App\Models\User $user
51     * @return boolean
52     */
53    public function update(User $authUser, User $user): bool
54    {
55        return $authUser->getRouteKey() === $user->getRouteKey() or
56            (UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
57                UserStaticRules::atLeastRole($authUser, $user->role));
58    }
59
60    /**
61     * Determine whether the user can delete the model.
62     *
63     * @param \App\Models\User $authUser
64     * @param \App\Models\User $user
65     * @return boolean
66     */
67    public function delete(User $authUser, User $user): bool
68    {
69        return $authUser->getRouteKey() !== $user->getRouteKey() and
70            UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
71            UserStaticRules::atLeastRole($authUser, $user->role);
72    }
73
74    /**
75     * Determine whether the user can restore the model.
76     *
77     * @param \App\Models\User $authUser
78     * @param \App\Models\User $user
79     * @return boolean
80     */
81    public function restore(User $authUser, User $user): bool
82    {
83        return $authUser->getRouteKey() !== $user->getRouteKey() and
84            UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
85            UserStaticRules::atLeastRole($authUser, $user->role);
86    }
87
88    /**
89     * Determine whether the user can permanently delete the model.
90     *
91     * @param \App\Models\User $authUser
92     * @param \App\Models\User $user
93     * @return booleanean
94     */
95    public function forceDelete(User $authUser, User $user): bool
96    {
97        return $authUser->getRouteKey() !== $user->getRouteKey() and
98            UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
99            UserStaticRules::atLeastRole($authUser, $user->role);
100    }
101
102    /**
103     * Determine whether the user can duplicate the model.
104     *
105     * @param \App\Models\User $authUser
106     * @param \App\Models\User $user
107     * @return booleanean
108     */
109    public function duplicate(User $authUser, User $user): bool
110    {
111        return $authUser->getRouteKey() !== $user->getRouteKey() and
112            UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
113            UserStaticRules::atLeastRole($authUser, $user->role);
114    }
115
116    /**
117     * Determine whether the user can publish/unpublish the model.
118     *
119     * @param \App\Models\User $authUser
120     * @param \App\Models\User $user
121     * @return booleanean
122     */
123    public function changePublished(User $authUser, User $user): bool
124    {
125        return $authUser->getRouteKey() !== $user->getRouteKey() and
126            UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
127            UserStaticRules::atLeastRole($authUser, $user->role);
128    }
129}