/**
  * {@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();
 }
Exemple #2
0
 /**
  * {@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();
 }