From ddb2e84aa3d818e93f9616167e34e70f9df92930 Mon Sep 17 00:00:00 2001 From: Liam Morland <lkmorlan@uwaterloo.ca> Date: Wed, 13 Oct 2021 12:09:37 -0400 Subject: [PATCH] ISTWCMS-5085: Refactor UwNodeAccessCheck::access() --- src/Access/UwNodeAccessCheck.php | 44 ++++++++++++++------------------ 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/src/Access/UwNodeAccessCheck.php b/src/Access/UwNodeAccessCheck.php index 21019ee7..9c3fac18 100644 --- a/src/Access/UwNodeAccessCheck.php +++ b/src/Access/UwNodeAccessCheck.php @@ -27,37 +27,31 @@ class UwNodeAccessCheck implements AccessInterface { * The access result. */ public function access(RouteMatchInterface $route_match, AccountInterface $account): AccessResult { - $route_name = $route_match->getRouteName(); - - // Menu link edit pages. - if ($route_name === 'menu_ui.link_edit') { - $menu_link_plugin = $route_match->getParameter('menu_link_plugin'); - // Only those with permission may edit home page menu entry. - if ($menu_link_plugin->getPluginId() === 'uw_base_profile.front_page') { - return $account->hasPermission('bypass home page protection') ? AccessResult::allowed() : AccessResult::forbidden(); - } - else { + switch ($route_match->getRouteName()) { + // Menu link edit pages. + case 'menu_ui.link_edit': + $menu_link_plugin = $route_match->getParameter('menu_link_plugin'); + // Only those with permission may edit home page menu entry. + if ($menu_link_plugin->getPluginId() === 'uw_base_profile.front_page') { + return $account->hasPermission('bypass home page protection') ? AccessResult::allowed() : AccessResult::forbidden(); + } // Otherwise, default to access set in menu_admin_per_menu. $menu_admin_per_menu = new MenuAdminPerMenuAccess(); return $menu_admin_per_menu->menuLinkAccess($account, $menu_link_plugin); - } - } - // Node delete pages. - if ($route_name === 'entity.node.delete_form') { - $node = $route_match->getParameter('node'); - // Only those with permission may delete the home page. - if ($node && UWService::nodeIsHomePage((int) $node->id())) { - return $account->hasPermission('bypass home page protection') ? AccessResult::allowed() : AccessResult::forbidden(); - } - else { + // Node delete pages. + case 'entity.node.delete_form': + $node = $route_match->getParameter('node'); + // Only those with permission may delete the home page. + if ($node && UWService::nodeIsHomePage((int) $node->id())) { + return $account->hasPermission('bypass home page protection') ? AccessResult::allowed() : AccessResult::forbidden(); + } return AccessResult::allowed(); - } - } - // Dashboard config: admin/config/dashboards/dashboardssettings. - if ($route_name === 'dashboards.dashboards_settings_form') { - return $account->hasPermission('access dashboard config') ? AccessResult::allowed() : AccessResult::forbidden(); + // Dashboard config: admin/config/dashboards/dashboardssettings. + case 'dashboards.dashboards_settings_form': + return $account->hasPermission('access dashboard config') ? AccessResult::allowed() : AccessResult::forbidden(); + } // Get the node object, which is in the route match variable. -- GitLab