@@ -67,7 +67,7 @@ class UserPermissions extends Component
6767
6868 /**
6969 * @var string[]
70- * @see filterInvalidPermissions ()
70+ * @see allPermissionNames ()
7171 */
7272 private array |null $ _allPermissionNames = null ;
7373
@@ -103,25 +103,25 @@ class UserPermissions extends Component
103103 public function getAllPermissions (): array
104104 {
105105 if (!isset ($ this ->_allPermissions )) {
106- $ permissions = [];
106+ $ this -> _allPermissions = [];
107107
108- $ this ->_generalPermissions ($ permissions );
109- $ this ->_userPermissions ($ permissions );
110- $ this ->_sitePermissions ($ permissions );
111- $ this ->_entryPermissions ($ permissions );
112- $ this ->_globalSetPermissions ($ permissions );
113- $ this ->_categoryPermissions ($ permissions );
114- $ this ->_volumePermissions ($ permissions );
115- $ this ->_utilityPermissions ($ permissions );
108+ $ this ->_generalPermissions ($ this -> _allPermissions );
109+ $ this ->_userPermissions ($ this -> _allPermissions );
110+ $ this ->_sitePermissions ($ this -> _allPermissions );
111+ $ this ->_entryPermissions ($ this -> _allPermissions );
112+ $ this ->_globalSetPermissions ($ this -> _allPermissions );
113+ $ this ->_categoryPermissions ($ this -> _allPermissions );
114+ $ this ->_volumePermissions ($ this -> _allPermissions );
115+ $ this ->_utilityPermissions ($ this -> _allPermissions );
116116
117117 // Fire a 'registerPermissions' event
118118 if ($ this ->hasEventHandlers (self ::EVENT_REGISTER_PERMISSIONS )) {
119- $ event = new RegisterUserPermissionsEvent (['permissions ' => $ permissions ]);
119+ $ event = new RegisterUserPermissionsEvent ([
120+ 'permissions ' => $ this ->_allPermissions ,
121+ ]);
120122 $ this ->trigger (self ::EVENT_REGISTER_PERMISSIONS , $ event );
121- $ permissions = $ event ->permissions ;
123+ $ this -> _allPermissions = $ event ->permissions ;
122124 }
123-
124- $ this ->_allPermissions = $ permissions ;
125125 }
126126
127127 return $ this ->_allPermissions ;
@@ -167,14 +167,10 @@ public function getAssignablePermissions(?User $user = null): array
167167 public function getPermissionsByGroupId (int $ groupId ): array
168168 {
169169 if (!isset ($ this ->_permissionsByGroupId [$ groupId ])) {
170- /** @var string[] $groupPermissions */
171- $ groupPermissions = $ this ->_createUserPermissionsQuery ()
170+ $ this ->_permissionsByGroupId [$ groupId ] = $ this ->_createUserPermissionsQuery ()
172171 ->innerJoin (['p_g ' => Table::USERPERMISSIONS_USERGROUPS ], '[[p_g.permissionId]] = [[p.id]] ' )
173172 ->where (['p_g.groupId ' => $ groupId ])
174173 ->column ();
175-
176- // filter out any invalid permissions
177- $ this ->_permissionsByGroupId [$ groupId ] = $ this ->filterInvalidPermissions ($ groupPermissions );
178174 }
179175
180176 return $ this ->_permissionsByGroupId [$ groupId ];
@@ -193,14 +189,11 @@ public function getGroupPermissionsByUserId(int $userId): array
193189 return $ this ->getPermissionsByGroupId ($ group ->id );
194190 }
195191
196- $ permissions = $ this ->_createUserPermissionsQuery ()
192+ return $ this ->_createUserPermissionsQuery ()
197193 ->innerJoin (['p_g ' => Table::USERPERMISSIONS_USERGROUPS ], '[[p_g.permissionId]] = [[p.id]] ' )
198194 ->innerJoin (['g_u ' => Table::USERGROUPS_USERS ], '[[g_u.groupId]] = [[p_g.groupId]] ' )
199195 ->where (['g_u.userId ' => $ userId ])
200196 ->column ();
201-
202- // filter out any invalid permissions
203- return $ this ->filterInvalidPermissions ($ permissions );
204197 }
205198
206199 /**
@@ -272,9 +265,6 @@ public function getPermissionsByUserId(int $userId): array
272265 ->innerJoin (['p_u ' => Table::USERPERMISSIONS_USERS ], '[[p_u.permissionId]] = [[p.id]] ' )
273266 ->where (['p_u.userId ' => $ userId ])
274267 ->column ();
275-
276- // filter out any invalid permissions
277- $ userPermissions = $ this ->filterInvalidPermissions ($ userPermissions );
278268 } else {
279269 $ userPermissions = [];
280270 }
@@ -285,7 +275,12 @@ public function getPermissionsByUserId(int $userId): array
285275 return $ this ->_permissionsByUserId [$ userId ];
286276 }
287277
288- private function filterInvalidPermissions (array $ permissions ): array
278+ /**
279+ * @param string $permission
280+ * @return bool
281+ * @since 5.8.13.2
282+ */
283+ public function validatePermission (string $ permission ): bool
289284 {
290285 if (!isset ($ this ->_allPermissionNames )) {
291286 $ this ->_allPermissionNames = [];
@@ -294,7 +289,7 @@ private function filterInvalidPermissions(array $permissions): array
294289 }
295290 }
296291
297- return array_values ( array_filter ( $ permissions , fn ( $ permission ) => isset ($ this ->_allPermissionNames [strtolower ($ permission )])) );
292+ return isset ($ this ->_allPermissionNames [strtolower ($ permission )]);
298293 }
299294
300295 private function collectPermissionNames (array &$ permissions ): void
0 commit comments