diff --git a/src/Policies/NavTreePolicy.php b/src/Policies/NavTreePolicy.php index 1fbdfc8dcef..037cbe44491 100644 --- a/src/Policies/NavTreePolicy.php +++ b/src/Policies/NavTreePolicy.php @@ -10,7 +10,9 @@ class NavTreePolicy extends NavPolicy public function before($user) { - if (User::fromUser($user)->isSuper()) { + $user = User::fromUser($user); + + if ($user->isSuper() || $user->hasPermission('configure navs')) { return true; } } diff --git a/tests/Policies/NavTreePolicyTest.php b/tests/Policies/NavTreePolicyTest.php index 522df211f6e..0091fa78c6b 100644 --- a/tests/Policies/NavTreePolicyTest.php +++ b/tests/Policies/NavTreePolicyTest.php @@ -37,6 +37,17 @@ public function trees_are_viewable_with_view_and_site_permissions() $this->assertTrue($user->can('view', $nav->makeTree('de'))); } + #[Test] + public function trees_are_viewable_and_editable_with_configure_permission() + { + $user = $this->userWithPermissions(['configure navs']); + + $nav = Nav::make('test'); + + $this->assertTrue($user->can('view', $nav->makeTree('en'))); + $this->assertTrue($user->can('edit', $nav->makeTree('en'))); + } + #[Test] public function navs_are_editable_with_edit_permissions() {