Loading core/modules/navigation/navigation.permissions.yml +2 −2 Original line number Diff line number Diff line access navigation: title: 'Access navigation bar' administer navigation_block: title: 'Administer navigation blocks' configure navigation layout: title: 'Configure navigation layout' core/modules/navigation/navigation.post_update.php 0 → 100644 +28 −0 Original line number Diff line number Diff line <?php /** * @file * Post update functions for the Navigation module. */ use Drupal\Core\Config\Entity\ConfigEntityUpdater; use Drupal\user\RoleInterface; /** * Grants navigation specific permission to roles with access to any layout. */ function navigation_post_update_update_permissions(array &$sandbox) { \Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'user_role', function (RoleInterface $role) { $needs_save = FALSE; if ($role->hasPermission('configure any layout')) { $role->grantPermission('configure navigation layout'); $needs_save = TRUE; } if ($role->hasPermission('administer navigation_block')) { $role->revokePermission('administer navigation_block'); $role->grantPermission('configure navigation layout'); $needs_save = TRUE; } return $needs_save; }); } core/modules/navigation/src/Plugin/SectionStorage/NavigationSectionStorage.php +10 −7 Original line number Diff line number Diff line Loading @@ -30,12 +30,15 @@ * * @internal The navigation module is experimental. */ #[SectionStorage(id: "navigation", context_definitions: [ #[SectionStorage(id: "navigation", context_definitions: [ "navigation" => new ContextDefinition( data_type: "string", label: new TranslatableMarkup("Navigation flag"), ), ])] ], handles_permission_check: TRUE, )] final class NavigationSectionStorage extends PluginBase implements SectionStorageInterface, SectionStorageLocalTaskProviderInterface, ContainerFactoryPluginInterface, CacheableDependencyInterface { const STORAGE_ID = 'navigation.block_layout'; Loading Loading @@ -184,7 +187,7 @@ public function getRedirectUrl(): Url { * {@inheritdoc} */ public function access($operation, AccountInterface $account = NULL, $return_as_object = FALSE): AccessResultInterface | bool { $result = AccessResult::allowed(); $result = AccessResult::allowedIfHasPermission($account, 'configure navigation layout'); return $return_as_object ? $result : $result->isAllowed(); } Loading core/modules/navigation/tests/src/Functional/NavigationShortcutsBlockTest.php +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public function testNavigationBlock() { 'access shortcuts', 'administer site configuration', 'access administration pages', 'configure any layout', 'configure navigation layout', ]); // Create two different users with the same role to assert that the second Loading core/modules/navigation/tests/src/Functional/NavigationTopBarTest.php +0 −2 Original line number Diff line number Diff line Loading @@ -51,12 +51,10 @@ protected function setUp(): void { parent::setUp(); // Create and log in an administrative user. $this->adminUser = $this->drupalCreateUser([ 'administer navigation_block', 'administer site configuration', 'access administration pages', 'access navigation', 'bypass node access', 'configure any layout', ]); $this->drupalLogin($this->adminUser); Loading Loading
core/modules/navigation/navigation.permissions.yml +2 −2 Original line number Diff line number Diff line access navigation: title: 'Access navigation bar' administer navigation_block: title: 'Administer navigation blocks' configure navigation layout: title: 'Configure navigation layout'
core/modules/navigation/navigation.post_update.php 0 → 100644 +28 −0 Original line number Diff line number Diff line <?php /** * @file * Post update functions for the Navigation module. */ use Drupal\Core\Config\Entity\ConfigEntityUpdater; use Drupal\user\RoleInterface; /** * Grants navigation specific permission to roles with access to any layout. */ function navigation_post_update_update_permissions(array &$sandbox) { \Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'user_role', function (RoleInterface $role) { $needs_save = FALSE; if ($role->hasPermission('configure any layout')) { $role->grantPermission('configure navigation layout'); $needs_save = TRUE; } if ($role->hasPermission('administer navigation_block')) { $role->revokePermission('administer navigation_block'); $role->grantPermission('configure navigation layout'); $needs_save = TRUE; } return $needs_save; }); }
core/modules/navigation/src/Plugin/SectionStorage/NavigationSectionStorage.php +10 −7 Original line number Diff line number Diff line Loading @@ -30,12 +30,15 @@ * * @internal The navigation module is experimental. */ #[SectionStorage(id: "navigation", context_definitions: [ #[SectionStorage(id: "navigation", context_definitions: [ "navigation" => new ContextDefinition( data_type: "string", label: new TranslatableMarkup("Navigation flag"), ), ])] ], handles_permission_check: TRUE, )] final class NavigationSectionStorage extends PluginBase implements SectionStorageInterface, SectionStorageLocalTaskProviderInterface, ContainerFactoryPluginInterface, CacheableDependencyInterface { const STORAGE_ID = 'navigation.block_layout'; Loading Loading @@ -184,7 +187,7 @@ public function getRedirectUrl(): Url { * {@inheritdoc} */ public function access($operation, AccountInterface $account = NULL, $return_as_object = FALSE): AccessResultInterface | bool { $result = AccessResult::allowed(); $result = AccessResult::allowedIfHasPermission($account, 'configure navigation layout'); return $return_as_object ? $result : $result->isAllowed(); } Loading
core/modules/navigation/tests/src/Functional/NavigationShortcutsBlockTest.php +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public function testNavigationBlock() { 'access shortcuts', 'administer site configuration', 'access administration pages', 'configure any layout', 'configure navigation layout', ]); // Create two different users with the same role to assert that the second Loading
core/modules/navigation/tests/src/Functional/NavigationTopBarTest.php +0 −2 Original line number Diff line number Diff line Loading @@ -51,12 +51,10 @@ protected function setUp(): void { parent::setUp(); // Create and log in an administrative user. $this->adminUser = $this->drupalCreateUser([ 'administer navigation_block', 'administer site configuration', 'access administration pages', 'access navigation', 'bypass node access', 'configure any layout', ]); $this->drupalLogin($this->adminUser); Loading