You are here

public function AuthenticationSubscriber::onExceptionSendChallenge in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php \Drupal\Core\EventSubscriber\AuthenticationSubscriber::onExceptionSendChallenge()
  2. 10 core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php \Drupal\Core\EventSubscriber\AuthenticationSubscriber::onExceptionSendChallenge()

Respond with a challenge on access denied exceptions if appropriate.

On a 403 (access denied), if there are no credentials on the request, some authentication methods (e.g. basic auth) require that a challenge is sent to the client.

Parameters

\Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event: The exception event.

File

core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php, line 111

Class

AuthenticationSubscriber
Authentication subscriber.

Namespace

Drupal\Core\EventSubscriber

Code

public function onExceptionSendChallenge(GetResponseForExceptionEvent $event) {
  if (isset($this->challengeProvider) && $event
    ->isMasterRequest()) {
    $request = $event
      ->getRequest();
    $exception = $event
      ->getException();
    if ($exception instanceof AccessDeniedHttpException && !$this->authenticationProvider
      ->applies($request) && (!isset($this->filter) || $this->filter
      ->appliesToRoutedRequest($request, FALSE))) {
      $challenge_exception = $this->challengeProvider
        ->challengeException($request, $exception);
      if ($challenge_exception) {
        $event
          ->setException($challenge_exception);
      }
    }
  }
}