Issue #3444745 by fjgarlin, plopesc, m4olivei: Navigation Top Bar hides entity local tasks even if the user has no access to the bar

merge-requests/10864/head
Lee Rowlands 2024-12-20 09:30:24 +10:00
parent 431532d69a
commit a49ba33853
No known key found for this signature in database
GPG Key ID: 2B829A3DF9204DC4
2 changed files with 12 additions and 1 deletions

View File

@ -158,7 +158,9 @@ function navigation_menu_links_discovered_alter(&$links) {
function navigation_block_build_local_tasks_block_alter(array &$build, BlockPluginInterface $block) {
$navigation_renderer = \Drupal::service('navigation.renderer');
assert($navigation_renderer instanceof NavigationRenderer);
$navigation_renderer->removeLocalTasks($build, $block);
if (\Drupal::currentUser()->hasPermission('access navigation')) {
$navigation_renderer->removeLocalTasks($build, $block);
}
}
/**

View File

@ -99,6 +99,15 @@ class NavigationTopBarTest extends BrowserTestBase {
$this->assertSession()->elementTextEquals('xpath', "//div[contains(@class, 'top-bar__content')]/button/span", 'More actions');
$this->assertSession()->elementNotExists('xpath', '//div[@id="block-tabs"]');
}
// Regular tabs are visible for user that cannot access to navigation.
$this->drupalLogin($this->drupalCreateUser([
'bypass node access',
]));
$this->drupalGet($this->node->toUrl());
$this->assertSession()->elementNotExists('xpath', "//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button/span");
$this->assertSession()->elementExists('xpath', '//div[@id="block-tabs"]');
}
}