diff --git a/core/modules/toolbar/lib/Drupal/toolbar/Access/SubtreeAccess.php b/core/modules/toolbar/lib/Drupal/toolbar/Access/SubtreeAccess.php new file mode 100644 index 0000000..6f8a90e --- /dev/null +++ b/core/modules/toolbar/lib/Drupal/toolbar/Access/SubtreeAccess.php @@ -0,0 +1,39 @@ +getRequirements()); + } + + /** + * {@inheritdoc} + */ + public function access(Route $route, Request $request) { + $hash = $request->get('hash'); + if (user_access('access toolbar') && ($hash == _toolbar_get_subtree_hash())) { + return TRUE; + } + else { + return NULL; + } + } + +} diff --git a/core/modules/toolbar/lib/Drupal/toolbar/Routing/ToolbarController.php b/core/modules/toolbar/lib/Drupal/toolbar/Routing/ToolbarController.php new file mode 100644 index 0000000..54d0433 --- /dev/null +++ b/core/modules/toolbar/lib/Drupal/toolbar/Routing/ToolbarController.php @@ -0,0 +1,30 @@ +setCallback('Drupal.toolbar.setSubtrees'); + return $response; + } + +} diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module index fe4f615..b18f88a 100644 --- a/core/modules/toolbar/toolbar.module +++ b/core/modules/toolbar/toolbar.module @@ -59,20 +59,6 @@ function toolbar_theme($existing, $type, $theme, $path) { } /** - * Implements hook_menu(). - */ -function toolbar_menu() { - $items['toolbar/subtrees/%'] = array( - 'page callback' => 'toolbar_subtrees_jsonp', - 'page arguments' => array(2), - 'access callback' => '_toolbar_subtrees_access', - 'access arguments' => array(2), - 'type' => MENU_CALLBACK, - ); - return $items; -} - -/** * Implements hook_element_info(). */ function toolbar_element_info() { @@ -125,28 +111,6 @@ function toolbar_element_info() { } /** - * Access callback: Returns if the user has access to the rendered subtree requested by the hash. - * - * @see toolbar_menu(). - */ -function _toolbar_subtrees_access($hash) { - return user_access('access toolbar') && ($hash == _toolbar_get_subtree_hash()); -} - -/** - * Page callback: Returns the rendered subtree of each top-level toolbar link. - * - * @see toolbar_menu(). - */ -function toolbar_subtrees_jsonp($hash) { - _toolbar_initialize_page_cache(); - $subtrees = toolbar_get_rendered_subtrees(); - $response = new JsonResponse($subtrees); - $response->setCallback('Drupal.toolbar.setSubtrees'); - return $response; -} - -/** * Use Drupal's page cache for toolbar/subtrees/*, even for authenticated users. * * This gets invoked after full bootstrap, so must duplicate some of what's diff --git a/core/modules/toolbar/toolbar.routing.yml b/core/modules/toolbar/toolbar.routing.yml new file mode 100644 index 0000000..68d19da --- /dev/null +++ b/core/modules/toolbar/toolbar.routing.yml @@ -0,0 +1,6 @@ +toolbar_subtrees: + pattern: '/toolbar/subtrees/{hash}' + defaults: + _controller: '\Drupal\toolbar\Routing\ToolbarController::subtreesJSONP' + requirements: + _access_toolbar_subtree: 'TRUE' diff --git a/core/modules/toolbar/toolbar.services.yml b/core/modules/toolbar/toolbar.services.yml index 7f26968..c700b62 100644 --- a/core/modules/toolbar/toolbar.services.yml +++ b/core/modules/toolbar/toolbar.services.yml @@ -1,4 +1,8 @@ services: + access_check.toolbar_subtree: + class: Drupal\toolbar\Access\SubtreeAccess + tags: + - { name: access_check } cache.toolbar: class: Drupal\Core\Cache\CacheBackendInterface tags: