diff --git a/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php b/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php index ec6266a..b919a15 100644 --- a/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php +++ b/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php @@ -49,6 +49,11 @@ protected function getArgument(\ReflectionParameter $parameter, RouteMatchInterf $parameter_type_hint = $parameter->getClass(); $parameter_name = $parameter->getName(); + // @todo Remove this once AccessManagerInterface::checkNamedRoute() is fixed + // to not leak _raw_variables from the request being duplicated. + // @see https://drupal.org/node/2265939 + $raw_route_arguments += $upcasted_route_arguments; + // If the route argument exists and is NULL, return it, regardless of // parameter type hint. if (!isset($upcasted_route_arguments[$parameter_name]) && array_key_exists($parameter_name, $upcasted_route_arguments)) { diff --git a/core/lib/Drupal/Core/Access/CustomAccessCheck.php b/core/lib/Drupal/Core/Access/CustomAccessCheck.php index c128a5b..08260d4 100644 --- a/core/lib/Drupal/Core/Access/CustomAccessCheck.php +++ b/core/lib/Drupal/Core/Access/CustomAccessCheck.php @@ -9,8 +9,8 @@ use Drupal\Core\Controller\ControllerResolverInterface; use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface; +use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Session\AccountInterface; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Route; /** @@ -65,9 +65,9 @@ public function __construct(ControllerResolverInterface $controller_resolver, Ac * @return string * A \Drupal\Core\Access\AccessInterface constant value. */ - public function access(Route $route, Request $request, AccountInterface $account) { + public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) { $callable = $this->controllerResolver->getControllerFromDefinition($route->getRequirement('_custom_access')); - $arguments = $this->argumentsResolver->getArguments($callable, $route, $request, $account); + $arguments = $this->argumentsResolver->getArguments($callable, $route_match, $account); return call_user_func_array($callable, $arguments); }