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) {