This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Yajra\Acl\Traits; |
||
4 | |||
5 | use Illuminate\Database\Eloquent\Relations\BelongsToMany; |
||
6 | use Yajra\Acl\Models\Permission; |
||
7 | |||
8 | /** |
||
9 | * @property \Illuminate\Database\Eloquent\Collection|Permission[] permissions |
||
10 | * @mixin \Illuminate\Database\Eloquent\Model |
||
11 | */ |
||
12 | trait InteractsWithPermission |
||
13 | { |
||
14 | private $permissionClass; |
||
15 | |||
16 | /** |
||
17 | * Grant permissions by slug(/s). |
||
18 | * |
||
19 | * @param string|array $slug |
||
20 | */ |
||
21 | public function grantPermissionBySlug($slug) |
||
22 | { |
||
23 | $this->getPermissionClass() |
||
24 | ->newQuery() |
||
25 | ->whereIn('slug', (array) $slug) |
||
26 | ->each(function ($permission) { |
||
27 | $this->grantPermission($permission); |
||
28 | }); |
||
29 | |||
30 | $this->load('permissions'); |
||
0 ignored issues
–
show
|
|||
31 | } |
||
32 | |||
33 | /** |
||
34 | * Get Permission class. |
||
35 | * |
||
36 | * @return \Yajra\Acl\Models\Permission |
||
37 | */ |
||
38 | public function getPermissionClass(): Permission |
||
39 | { |
||
40 | if (!isset($this->permissionClass)) { |
||
41 | $this->permissionClass = resolve(config('acl.permission')); |
||
42 | } |
||
43 | |||
44 | return $this->permissionClass; |
||
45 | } |
||
46 | |||
47 | /** |
||
48 | * Get related permissions. |
||
49 | * |
||
50 | * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany |
||
51 | */ |
||
52 | public function permissions(): BelongsToMany |
||
53 | { |
||
54 | return $this->belongsToMany(config('acl.permission', Permission::class))->withTimestamps(); |
||
0 ignored issues
–
show
It seems like
belongsToMany() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
55 | } |
||
56 | |||
57 | /** |
||
58 | * Grant permissions by resource. |
||
59 | * |
||
60 | * @param string|array $resource |
||
61 | */ |
||
62 | public function grantPermissionByResource($resource) |
||
63 | { |
||
64 | $this->getPermissionClass() |
||
65 | ->newQuery() |
||
66 | ->whereIn('resource', (array) $resource) |
||
67 | ->each(function ($permission) { |
||
68 | $this->grantPermission($permission); |
||
69 | }); |
||
70 | |||
71 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
72 | } |
||
73 | |||
74 | /** |
||
75 | * Grant the given permission. |
||
76 | * |
||
77 | * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $id |
||
78 | * @param array $attributes |
||
79 | * @param bool $touch |
||
80 | * @return void |
||
81 | */ |
||
82 | public function grantPermission($id, array $attributes = [], $touch = true) |
||
83 | { |
||
84 | $this->permissions()->attach($id, $attributes, $touch); |
||
85 | |||
86 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
87 | } |
||
88 | |||
89 | /** |
||
90 | * Revoke permissions by the given slug(/s). |
||
91 | * |
||
92 | * @param string|array $slug |
||
93 | */ |
||
94 | public function revokePermissionBySlug($slug) |
||
95 | { |
||
96 | $this->getPermissionClass() |
||
97 | ->newQuery() |
||
98 | ->whereIn('slug', (array) $slug) |
||
99 | ->each(function ($permission) { |
||
100 | $this->revokePermission($permission); |
||
101 | }); |
||
102 | |||
103 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
104 | } |
||
105 | |||
106 | /** |
||
107 | * Revoke permissions by resource. |
||
108 | * |
||
109 | * @param string|array $resource |
||
110 | */ |
||
111 | public function revokePermissionByResource($resource) |
||
112 | { |
||
113 | $this->getPermissionClass() |
||
114 | ->newQuery() |
||
115 | ->whereIn('resource', (array) $resource) |
||
116 | ->each(function ($permission) { |
||
117 | $this->revokePermission($permission); |
||
118 | }); |
||
119 | |||
120 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
121 | } |
||
122 | |||
123 | /** |
||
124 | * Revokes the given permission. |
||
125 | * |
||
126 | * @param mixed $id |
||
127 | * @param bool $touch |
||
128 | * @return int |
||
129 | */ |
||
130 | public function revokePermission($id = null, $touch = true): int |
||
131 | { |
||
132 | $detached = $this->permissions()->detach($id, $touch); |
||
133 | |||
134 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
135 | |||
136 | return $detached; |
||
137 | } |
||
138 | |||
139 | /** |
||
140 | * Syncs the given permission. |
||
141 | * |
||
142 | * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids |
||
143 | * @param bool $detaching |
||
144 | * @return array |
||
145 | */ |
||
146 | public function syncPermissions($ids, $detaching = true): array |
||
147 | { |
||
148 | $synced = $this->permissions()->sync($ids, $detaching); |
||
149 | |||
150 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
151 | |||
152 | return $synced; |
||
153 | } |
||
154 | |||
155 | /** |
||
156 | * Revokes all permissions. |
||
157 | * |
||
158 | * @return int |
||
159 | */ |
||
160 | public function revokeAllPermissions(): int |
||
161 | { |
||
162 | $detached = $this->permissions()->detach(); |
||
163 | |||
164 | $this->load('permissions'); |
||
0 ignored issues
–
show
It seems like
load() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
165 | |||
166 | return $detached; |
||
167 | } |
||
168 | |||
169 | /** |
||
170 | * Get list of permissions slug. |
||
171 | * |
||
172 | * @return array |
||
173 | */ |
||
174 | public function getPermissions(): array |
||
175 | { |
||
176 | return $this->permissions->pluck('slug')->toArray(); |
||
177 | } |
||
178 | } |
||
179 |
This check looks for methods that are used by a trait but not required by it.
To illustrate, let’s look at the following code example
The trait
Idable
provides a methodequalsId
that in turn relies on the methodgetId()
. If this method does not exist on a class mixing in this trait, the method will fail.Adding the
getId()
as an abstract method to the trait will make sure it is available.