protected PermissionHandler::buildPermissionsYaml()
Builds all permissions provided by .permissions.yml files.
Return value
array[] Each return permission is an array with the following keys:
- title: The title of the permission.
- description: The description of the permission, defaults to NULL.
- provider: The provider of the permission.
File
- core/modules/user/src/PermissionHandler.php, line 138
Class
- PermissionHandler
- Provides the available permissions based on yml files.
Namespace
Drupal\user
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | protected function buildPermissionsYaml() { $all_permissions = array (); $all_callback_permissions = array (); foreach ( $this ->getYamlDiscovery()->findAll() as $provider => $permissions ) { // The top-level 'permissions_callback' is a list of methods in controller // syntax, see \Drupal\Core\Controller\ControllerResolver. These methods // should return an array of permissions in the same structure. if (isset( $permissions [ 'permission_callbacks' ])) { foreach ( $permissions [ 'permission_callbacks' ] as $permission_callback ) { $callback = $this ->controllerResolver->getControllerFromDefinition( $permission_callback ); if ( $callback_permissions = call_user_func( $callback )) { // Add any callback permissions to the array of permissions. Any // defaults can then get processed below. foreach ( $callback_permissions as $name => $callback_permission ) { if (! is_array ( $callback_permission )) { $callback_permission = array ( 'title' => $callback_permission , ); } $callback_permission += array ( 'description' => NULL, 'provider' => $provider , ); $all_callback_permissions [ $name ] = $callback_permission ; } } } unset( $permissions [ 'permission_callbacks' ]); } foreach ( $permissions as & $permission ) { if (! is_array ( $permission )) { $permission = array ( 'title' => $permission , ); } $permission [ 'title' ] = $this ->t( $permission [ 'title' ]); $permission [ 'description' ] = isset( $permission [ 'description' ]) ? $this ->t( $permission [ 'description' ]) : NULL; $permission [ 'provider' ] = ! empty ( $permission [ 'provider' ]) ? $permission [ 'provider' ] : $provider ; } $all_permissions += $permissions ; } return $all_permissions + $all_callback_permissions ; } |
Please login to continue.