diff -u b/core/modules/contact/src/Access/ContactPageAccess.php b/core/modules/contact/src/Access/ContactPageAccess.php --- b/core/modules/contact/src/Access/ContactPageAccess.php +++ b/core/modules/contact/src/Access/ContactPageAccess.php @@ -72,8 +72,9 @@ // User administrators should always have access to personal contact forms. $access = AccessResult::neutral()->cachePerRole(); - if ($account->hasPermission('administer users')) { - return $access->allow(); + $permission_access = AccessResult::allowedIfHasPermission($account, 'administer users'); + if ($permission_access->allowed()) { + return $access->orIf($permission_access); } // If requested user has been blocked, do not allow users to contact them. @@ -94,7 +95,7 @@ return $access; } - return $access->allowIfHasPermission($account, 'access user contact forms'); + return $access->orIf(AccessResult::allowedIfHasPermission($account, 'access user contact forms')); } } diff -u b/core/modules/field_ui/src/Access/FormModeAccessCheck.php b/core/modules/field_ui/src/Access/FormModeAccessCheck.php --- b/core/modules/field_ui/src/Access/FormModeAccessCheck.php +++ b/core/modules/field_ui/src/Access/FormModeAccessCheck.php @@ -62,6 +62,7 @@ * The access result. */ public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account, $form_mode_name = 'default', $bundle = NULL) { + $access = AccessResult::neutral(); if ($entity_type_id = $route->getDefault('entity_type_id')) { if (!isset($bundle)) { $entity_type = $this->entityManager->getDefinition($entity_type_id); @@ -76,21 +77,16 @@ $visibility = $entity_display->status(); } - $access = AccessResult::neutral(); if ($form_mode_name != 'default' && $entity_display) { $access->cacheUntilEntityChanges($entity_display); } if ($visibility) { $permission = $route->getRequirement('_field_ui_form_mode_access'); - $access->allowIfHasPermission($account, $permission); + $access->orIf(AccessResult::allowedIfHasPermission($account, $permission)); } - return $access; - } - else { - // No opinion. - return AccessResult::neutral(); } + return $access; } } diff -u b/core/modules/field_ui/src/Access/ViewModeAccessCheck.php b/core/modules/field_ui/src/Access/ViewModeAccessCheck.php --- b/core/modules/field_ui/src/Access/ViewModeAccessCheck.php +++ b/core/modules/field_ui/src/Access/ViewModeAccessCheck.php @@ -62,6 +62,7 @@ * The access result. */ public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account, $view_mode_name = 'default', $bundle = NULL) { + $access = AccessResult::neutral(); if ($entity_type_id = $route->getDefault('entity_type_id')) { if (!isset($bundle)) { $entity_type = $this->entityManager->getDefinition($entity_type_id); @@ -76,21 +77,16 @@ $visibility = $entity_display->status(); } - $access = AccessResult::neutral(); if ($view_mode_name != 'default' && $entity_display) { $access->cacheUntilEntityChanges($entity_display); } if ($visibility) { $permission = $route->getRequirement('_field_ui_view_mode_access'); - $access->allowIfHasPermission($account, $permission); + $access->orIf(AccessResult::allowedIfHasPermission($account, $permission)); } return $access; } - else { - // No opinion. - return AccessResult::neutral(); - } } } diff -u b/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module --- b/core/modules/system/tests/modules/entity_test/entity_test.module +++ b/core/modules/system/tests/modules/entity_test/entity_test.module @@ -337,7 +337,7 @@ */ function entity_test_entity_field_access_alter(array &$grants, array $context) { if ($context['field_definition']->getName() == 'field_test_text' && $context['items'][0]->value == 'access alter value') { - $grants[':default']->forbid()->cacheUntilEntityChanges($context['items']->getEntity()); + $grants[':default'] = AccessResult::forbidden()->cacheUntilEntityChanges($context['items']->getEntity()); } }