File tree Expand file tree Collapse file tree 2 files changed +40
-12
lines changed
Expand file tree Collapse file tree 2 files changed +40
-12
lines changed Original file line number Diff line number Diff line change @@ -281,6 +281,33 @@ public function hasAnyPermission(...$permissions): bool
281281 return false ;
282282 }
283283
284+ /**
285+ * Determine if the model has all of the given permissions(s).
286+ *
287+ * @param $permissions
288+ *
289+ * @return bool
290+ * @throws \ReflectionException
291+ */
292+ public function hasAllPermissions (... $ permissions ): bool
293+ {
294+
295+ if (is_array ($ permissions [0 ])) {
296+ $ permissions = $ permissions [0 ];
297+ }
298+
299+ if (is_array ($ permissions ) && count ($ permissions ) === 1 ) {
300+ $ permissions = explode ('| ' , $ permissions [0 ]);
301+ }
302+
303+ foreach ($ permissions as $ permission ) {
304+ if (!$ this ->hasPermissionTo ($ permission )) {
305+ return false ;
306+ }
307+ }
308+ return true ;
309+ }
310+
284311 /**
285312 * Determine if the model has, via roles, the given permission.
286313 *
Original file line number Diff line number Diff line change @@ -145,7 +145,7 @@ public function hasRole($roles): bool
145145 return $ role instanceof Role ? $ role ->name : $ role ;
146146 });
147147
148- return ! $ roles ->intersect ($ this ->roles ->pluck ('name ' ))->isEmpty ();
148+ return !$ roles ->intersect ($ this ->roles ->pluck ('name ' ))->isEmpty ();
149149 }
150150
151151 /**
@@ -163,25 +163,26 @@ public function hasAnyRole($roles): bool
163163 /**
164164 * Determine if the model has all of the given role(s).
165165 *
166- * @param string|Role|\Illuminate\Support\Collection $roles
166+ * @param $roles
167167 *
168168 * @return bool
169169 */
170- public function hasAllRoles ($ roles ): bool
170+ public function hasAllRoles (... $ roles ): bool
171171 {
172- if (\is_string ($ roles) && false !== strpos ( $ roles , ' | ' )) {
173- $ roles = \explode ( ' | ' , $ roles) ;
172+ if (is_array ($ roles[ 0 ] )) {
173+ $ roles = $ roles[ 0 ] ;
174174 }
175175
176- if (\is_string ($ roles ) || $ roles instanceof Role ) {
177- return $ this -> hasRole ( $ roles );
176+ if (is_array ($ roles ) && count ( $ roles) === 1 ) {
177+ $ roles = explode ( ' | ' , $ roles[ 0 ] );
178178 }
179179
180- $ roles = \collect ()->make ($ roles )->map (function ($ role ) {
181- return $ role instanceof Role ? $ role ->name : $ role ;
182- });
183-
184- return $ roles ->intersect ($ this ->roles ->pluck ('name ' )) == $ roles ;
180+ foreach ($ roles as $ role ) {
181+ if (!$ this ->hasRole ($ role )) {
182+ return false ;
183+ }
184+ }
185+ return true ;
185186 }
186187
187188 /**
You can’t perform that action at this time.
0 commit comments