diff --git a/core/lib/Drupal/Core/Access/AccessManager.php b/core/lib/Drupal/Core/Access/AccessManager.php index 9a4681b..c86168e 100644 --- a/core/lib/Drupal/Core/Access/AccessManager.php +++ b/core/lib/Drupal/Core/Access/AccessManager.php @@ -8,6 +8,7 @@ namespace Drupal\Core\Access; use Drupal\Core\ParamConverter\ParamConverterManager; +use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface; use Drupal\Core\Routing\RequestHelper; use Drupal\Core\Routing\RouteProviderInterface; use Drupal\Core\Session\AccountInterface; @@ -336,7 +337,13 @@ protected function loadCheck($service_id) { throw new \InvalidArgumentException(sprintf('No check has been registered for %s', $service_id)); } - $this->checks[$service_id] = $this->container->get($service_id); + $check = $this->container->get($service_id); + + if (!($check instanceof RoutingAccessInterface)) { + throw new AccessException('All access checks must implement AccessInterface.'); + } + + $this->checks[$service_id] = $check; } /**