diff --git a/core/core.services.yml b/core/core.services.yml index 10fed58..12f3a3c 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -192,7 +192,7 @@ services: arguments: ['@container.namespaces'] plugin.manager.menu.local_action: class: Drupal\Core\Menu\LocalActionManager - arguments: ['@controller_resolver', '@request', '@router.route_provider', '@module_handler', '@cache.cache', '@language_manager', '@access_manager'] + arguments: ['@controller_resolver', '@request', '@router.route_provider', '@module_handler', '@cache.cache', '@language_manager', '@access_manager', '@current_user'] plugin.manager.menu.local_task: class: Drupal\Core\Menu\LocalTaskManager arguments: ['@controller_resolver', '@request', '@router.route_provider', '@module_handler', '@cache.cache', '@language_manager', '@access_manager', '@current_user'] diff --git a/core/lib/Drupal/Core/Menu/LocalActionManager.php b/core/lib/Drupal/Core/Menu/LocalActionManager.php index 6569f24..32ae80e 100644 --- a/core/lib/Drupal/Core/Menu/LocalActionManager.php +++ b/core/lib/Drupal/Core/Menu/LocalActionManager.php @@ -20,6 +20,7 @@ use Drupal\Core\Routing\RouteProviderInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface; +use Drupal\Core\Session\AccountInterface; /** * Manages discovery and instantiation of menu local action plugins. @@ -83,6 +84,13 @@ class LocalActionManager extends DefaultPluginManager { */ protected $accessManager; + /** + * The current user. + * + * @var \Drupal\Core\Session\AccountInterface + */ + protected $account; + /** * The plugin instances. * @@ -109,7 +117,7 @@ class LocalActionManager extends DefaultPluginManager { * @param \Drupal\Core\Access\AccessManager $access_manager * The access manager. */ - public function __construct(ControllerResolverInterface $controller_resolver, Request $request, RouteProviderInterface $route_provider, ModuleHandlerInterface $module_handler, CacheBackendInterface $cache_backend, LanguageManager $language_manager, AccessManager $access_manager) { + public function __construct(ControllerResolverInterface $controller_resolver, Request $request, RouteProviderInterface $route_provider, ModuleHandlerInterface $module_handler, CacheBackendInterface $cache_backend, LanguageManager $language_manager, AccessManager $access_manager, AccountInterface $account) { // Skip calling the parent constructor, since that assumes annotation-based // discovery. $this->discovery = new YamlDiscovery('local_actions', $module_handler->getModuleDirectories()); @@ -117,6 +125,7 @@ public function __construct(ControllerResolverInterface $controller_resolver, Re $this->factory = new ContainerFactory($this); $this->routeProvider = $route_provider; $this->accessManager = $access_manager; + $this->account = $account; $this->controllerResolver = $controller_resolver; $this->request = $request; $this->alterInfo($module_handler, 'menu_local_actions'); @@ -181,7 +190,7 @@ public function getActionsForRoute($route_appears) { 'route_parameters' => $route_parameters, 'localized_options' => $plugin->getOptions($this->request), ), - '#access' => $this->accessManager->checkNamedRoute($route_name, $route_parameters, \Drupal::currentUser()), + '#access' => $this->accessManager->checkNamedRoute($route_name, $route_parameters, $this->account), '#weight' => $plugin->getWeight(), ); } diff --git a/core/modules/book/lib/Drupal/book/BookBreadcrumbBuilder.php b/core/modules/book/lib/Drupal/book/BookBreadcrumbBuilder.php index 8f44284..0652286 100644 --- a/core/modules/book/lib/Drupal/book/BookBreadcrumbBuilder.php +++ b/core/modules/book/lib/Drupal/book/BookBreadcrumbBuilder.php @@ -74,7 +74,7 @@ public function build(array $attributes) { $depth = 1; while (!empty($book['p' . ($depth + 1)])) { if (!empty($menu_links[$book['p' . $depth]]) && ($menu_link = $menu_links[$book['p' . $depth]])) { - if ($this->accessManager->checkNamedRoute($menu_link->route_name, $menu_link->route_parameters)) { + if ($this->accessManager->checkNamedRoute($menu_link->route_name, $menu_link->route_parameters, $this->account)) { $links[] = $this->l($menu_link->label(), $menu_link->route_name, $menu_link->route_parameters, $menu_link->options); } }