diff --git a/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php b/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php index 1d86709..fea43eb 100644 --- a/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php +++ b/core/lib/Drupal/Core/Menu/DefaultMenuLinkTreeManipulators.php @@ -148,7 +148,7 @@ public function checkNodeAccess(array $tree) { */ protected function collectNodeLinks(array &$tree, array &$node_links) { foreach ($tree as $key => &$element) { - if ($element->link->getRouteName() == 'node.view') { + if ($element->link->getRouteName() == 'entity.node.canonical') { $nid = $element->link->getRouteParameters()['node']; $node_links[$nid][$key] = $element; // Deny access by default. checkNodeAccess() will readd it. diff --git a/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php b/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php index c790229..86422cb 100644 --- a/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php +++ b/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php @@ -268,10 +268,10 @@ public function testExtractSubtreeOfActiveTrail() { */ public function testCheckNodeAccess() { $links = array( - 1 => MenuLinkMock::create(array('id' => 'node.1', 'route_name' => 'node.view', 'title' => 'foo', 'parent' => '', 'route_parameters' => array('node' => 1))), - 2 => MenuLinkMock::create(array('id' => 'node.2', 'route_name' => 'node.view', 'title' => 'bar', 'parent' => 'node.1', 'route_parameters' => array('node' => 2))), - 3 => MenuLinkMock::create(array('id' => 'node.3', 'route_name' => 'node.view', 'title' => 'baz', 'parent' => 'node.2', 'route_parameters' => array('node' => 3))), - 4 => MenuLinkMock::create(array('id' => 'node.4', 'route_name' => 'node.view', 'title' => 'qux', 'parent' => 'node.3', 'route_parameters' => array('node' => 4))), + 1 => MenuLinkMock::create(array('id' => 'node.1', 'route_name' => 'entity.node.canonical', 'title' => 'foo', 'parent' => '', 'route_parameters' => array('node' => 1))), + 2 => MenuLinkMock::create(array('id' => 'node.2', 'route_name' => 'entity.node.canonical', 'title' => 'bar', 'parent' => 'node.1', 'route_parameters' => array('node' => 2))), + 3 => MenuLinkMock::create(array('id' => 'node.3', 'route_name' => 'entity.node.canonical', 'title' => 'baz', 'parent' => 'node.2', 'route_parameters' => array('node' => 3))), + 4 => MenuLinkMock::create(array('id' => 'node.4', 'route_name' => 'entity.node.canonical', 'title' => 'qux', 'parent' => 'node.3', 'route_parameters' => array('node' => 4))), 5 => MenuLinkMock::create(array('id' => 'test.1', 'route_name' => 'test_route', 'title' => 'qux', 'parent' => '')), 6 => MenuLinkMock::create(array('id' => 'test.2', 'route_name' => 'test_route', 'title' => 'qux', 'parent' => 'test.1')), ); @@ -304,8 +304,10 @@ public function testCheckNodeAccess() { $tree = $this->defaultMenuTreeManipulators->checkNodeAccess($tree); $this->assertTrue($tree[1]->access); $this->assertTrue($tree[2]->access); - $this->assertNull($tree[2]->subtree[3]->access); + // Ensure that access denied is set. + $this->assertFalse($tree[2]->subtree[3]->access); $this->assertTrue($tree[2]->subtree[3]->subtree[4]->access); + // Ensure that other routes than entity.node.canonical gets set as well. $this->assertNull($tree[5]->access); $this->assertNull($tree[5]->subtree[6]->access); }