diff --git a/core/modules/user/src/PermissionHandler.php b/core/modules/user/src/PermissionHandler.php index 1f07b25d95..1ab75f8dd8 100644 --- a/core/modules/user/src/PermissionHandler.php +++ b/core/modules/user/src/PermissionHandler.php @@ -70,6 +70,13 @@ class PermissionHandler implements PermissionHandlerInterface { */ protected $controllerResolver; + /** + * List of permissions. + * + * @var array + */ + protected $allPermissions = []; + /** * Constructs a new PermissionHandler. * @@ -105,17 +112,16 @@ protected function getYamlDiscovery() { * {@inheritdoc} */ public function getPermissions() { - $all_permissions = $this->buildPermissionsYaml(); - - return $this->sortPermissions($all_permissions); + if (empty($this->allPermissions)) { + $this->allPermissions = $this->sortPermissions($this->buildPermissionsYaml()); + } + return $this->allPermissions; } /** * {@inheritdoc} */ public function moduleProvidesPermissions($module_name) { - // @TODO Static cache this information, see - // https://www.drupal.org/node/2339487 $permissions = $this->getPermissions(); foreach ($permissions as $permission) { diff --git a/core/modules/user/tests/src/Traits/UserCreationTrait.php b/core/modules/user/tests/src/Traits/UserCreationTrait.php index ccccfa77ff..30ab0e55ff 100644 --- a/core/modules/user/tests/src/Traits/UserCreationTrait.php +++ b/core/modules/user/tests/src/Traits/UserCreationTrait.php @@ -184,6 +184,9 @@ protected function createRole(array $permissions, $rid = NULL, $name = NULL, $we * TRUE if the permissions are valid, FALSE otherwise. */ protected function checkPermissions(array $permissions) { + // Reset the user.permissions service to reset statically cached + // permissions. + \Drupal::getContainer()->set('user.permissions', NULL); $available = array_keys(\Drupal::service('user.permissions')->getPermissions()); $valid = TRUE; foreach ($permissions as $permission) {