diff --git a/core/lib/Drupal/Core/Access/AccessManager.php b/core/lib/Drupal/Core/Access/AccessManager.php index b28f13c..181955a 100644 --- a/core/lib/Drupal/Core/Access/AccessManager.php +++ b/core/lib/Drupal/Core/Access/AccessManager.php @@ -104,17 +104,15 @@ public function check(Route $route, Request $request) { $conjunction = $route->getRequirement('_access_conjunction') ?: 'AND'; if ($conjunction == 'AND') { - $access = $this->checkAnd($checks, $route, $request); + return $this->checkAnd($checks, $route, $request); } else { - $access = $this->checkOr($checks, $route, $request); + return $this->checkOr($checks, $route, $request); } - - return $access; } /** - * Checks access for and conjunction. + * Checks access for AND conjunction. * * @param array $checks * Contains the list of checks on the route definition. @@ -136,7 +134,8 @@ protected function checkAnd(array $checks, Route $route, Request $request) { $service_access = $this->checks[$service_id]->access($route, $request); if ($service_access === FALSE) { - return FALSE; + $access = FALSE; + break; } if ($service_access === TRUE) { $access = TRUE; @@ -147,7 +146,7 @@ protected function checkAnd(array $checks, Route $route, Request $request) { } /** - * Checks access for or conjunction. + * Checks access for OR conjunction. * * @param array $checks * Contains the list of checks on the route definition. @@ -170,10 +169,12 @@ protected function checkOr(array $checks, $route, $request) { $service_access = $this->checks[$service_id]->access($route, $request); if ($service_access === TRUE) { - return TRUE; + $access = TRUE; + break; } if ($service_access === FALSE) { - return FALSE; + $access = FALSE; + break; } } diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php index 1c90d33..5c5d53f 100644 --- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php @@ -187,7 +187,7 @@ public function testCheckConjunctions() { } /** - * Add a default access check service to the container and the access manager. + * Adds a default access check service to the container and the access manager. */ protected function setupAccessChecker() { $access_check = new DefaultAccessCheck();