Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Routing/AccessAwareRouter.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line diff
--- a/core/lib/Drupal/Core/Routing/AccessAwareRouter.php Tue Jul 10 15:07:59 2018 +0100 +++ b/core/lib/Drupal/Core/Routing/AccessAwareRouter.php Thu Feb 28 13:21:36 2019 +0000 @@ -4,6 +4,8 @@ use Drupal\Core\Access\AccessManagerInterface; use Drupal\Core\Access\AccessResultReasonInterface; +use Drupal\Core\Cache\CacheableDependencyInterface; +use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException; use Drupal\Core\Session\AccountInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; @@ -34,7 +36,7 @@ /** * The account to use in access checks. * - * @var \Drupal\Core\Session\AccountInterface; + * @var \Drupal\Core\Session\AccountInterface */ protected $account; @@ -111,7 +113,12 @@ $request->attributes->set(AccessAwareRouterInterface::ACCESS_RESULT, $access_result); } if (!$access_result->isAllowed()) { - throw new AccessDeniedHttpException($access_result instanceof AccessResultReasonInterface ? $access_result->getReason() : NULL); + if ($access_result instanceof CacheableDependencyInterface && $request->isMethodCacheable()) { + throw new CacheableAccessDeniedHttpException($access_result, $access_result instanceof AccessResultReasonInterface ? $access_result->getReason() : NULL); + } + else { + throw new AccessDeniedHttpException($access_result instanceof AccessResultReasonInterface ? $access_result->getReason() : NULL); + } } }