diff --git a/core/modules/user/src/PermissionManager.php b/core/modules/user/src/PermissionManager.php index ddf5c0f..f0ec3e7 100644 --- a/core/modules/user/src/PermissionManager.php +++ b/core/modules/user/src/PermissionManager.php @@ -8,6 +8,8 @@ namespace Drupal\user; use Drupal\Component\Discovery\YamlDiscovery; use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\Core\StringTranslation\TranslationInterface; /** * Provides the available permissions based on hook_permission and yml files. @@ -25,6 +27,8 @@ */ class PermissionManager implements PermissionManagerInterface { + use StringTranslationTrait; + /** * The module handler. * @@ -44,10 +48,13 @@ class PermissionManager implements PermissionManagerInterface { * * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. + * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation + * The string translation. */ - public function __construct(ModuleHandlerInterface $module_handler) { + public function __construct(ModuleHandlerInterface $module_handler, TranslationInterface $string_translation) { $this->moduleHandler = $module_handler; $this->ymlDiscovery = new YamlDiscovery('permissions', $this->moduleHandler->getModuleDirectories()); + $this->stringTranslation = $string_translation; } /** @@ -78,6 +85,13 @@ protected function buildPermissions() { foreach ($this->ymlDiscovery->findAll() as $provider => $permissions) { 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'] = $provider; } $all_permissions += $permissions; @@ -85,6 +99,11 @@ protected function buildPermissions() { foreach ($this->moduleHandler->getImplementations('permission') as $provider) { $permissions = $this->moduleHandler->invoke($provider, 'permission'); foreach ($permissions as &$permission) { + if (!is_array($permission)) { + $permission = array( + 'title' => $permission, + ); + } $permission['provider'] = $provider; } $all_permissions += $permissions; diff --git a/core/modules/user/user.services.yml b/core/modules/user/user.services.yml index 58c9239..8cb08b7 100644 --- a/core/modules/user/user.services.yml +++ b/core/modules/user/user.services.yml @@ -57,7 +57,7 @@ services: arguments: ['@serialization.phpserialize', '@database', '@lock', '%user.tempstore.expire%'] user.permissions: class: Drupal\user\PermissionManager - arguments: ['@module_handler'] + arguments: ['@module_handler', '@string_translation'] parameters: user.tempstore.expire: 604800