/** * {@inheritdoc} */ public function check(RouteMatchInterface $route_match, AccountInterface $account = NULL, Request $request = NULL, $return_as_object = FALSE) { if (!isset($account)) { $account = $this->currentUser; } $route = $route_match->getRouteObject(); $checks = $route->getOption('_access_checks') ?: array(); $conjunction = $route->getOption('_access_mode') ?: static::ACCESS_MODE_ALL; // Filter out checks which require the incoming request. if (!isset($request)) { $checks = array_diff($checks, $this->checkProvider->getChecksNeedRequest()); } $result = AccessResult::neutral(); if (!empty($checks)) { $arguments_resolver = $this->argumentsResolverFactory->getArgumentsResolver($route_match, $account, $request); if ($conjunction == static::ACCESS_MODE_ALL) { $result = $this->checkAll($checks, $arguments_resolver); } else { $result = $this->checkAny($checks, $arguments_resolver); } } return $return_as_object ? $result : $result->isAllowed(); }
/** * {@inheritdoc} */ public function check(RouteMatchInterface $route_match, AccountInterface $account = NULL, Request $request = NULL, $return_as_object = FALSE) { if (!isset($account)) { $account = $this->currentUser; } $route = $route_match->getRouteObject(); $checks = $route->getOption('_access_checks') ?: array(); // Filter out checks which require the incoming request. if (!isset($request)) { $checks = array_diff($checks, $this->checkProvider->getChecksNeedRequest()); } $result = AccessResult::neutral(); if (!empty($checks)) { $arguments_resolver = $this->argumentsResolverFactory->getArgumentsResolver($route_match, $account, $request); if (!$checks) { return AccessResult::neutral(); } $result = AccessResult::allowed(); foreach ($checks as $service_id) { $result = $result->andIf($this->performCheck($service_id, $arguments_resolver)); } } return $return_as_object ? $result : $result->isAllowed(); }