PartKeepr\AuthBundle\Security\Authentication\AuthenticationProviderManager::authenticate PHP Method

authenticate() public method

public authenticate ( Symfony\Component\Security\Core\Authentication\Token\TokenInterface $token )
$token Symfony\Component\Security\Core\Authentication\Token\TokenInterface
    public function authenticate(TokenInterface $token)
    {
        $lastException = null;
        $result = null;
        foreach ($this->providers as $provider) {
            if (!$provider->supports($token)) {
                continue;
            }
            try {
                $result = $provider->authenticate($token);
                if (null !== $result) {
                    $result->setAttribute('provider', get_class($provider));
                    break;
                }
            } catch (AccountStatusException $e) {
                $e->setToken($token);
                throw $e;
            } catch (AuthenticationException $e) {
                $lastException = $e;
            }
        }
        if (null !== $result) {
            if (true === $this->eraseCredentials) {
                $result->eraseCredentials();
            }
            if (null !== $this->eventDispatcher) {
                $this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_SUCCESS, new AuthenticationEvent($result));
            }
            return $result;
        }
        if (null === $lastException) {
            $lastException = new ProviderNotFoundException(sprintf('No Authentication UserProvider found for token of class "%s".', get_class($token)));
        }
        if (null !== $this->eventDispatcher) {
            $this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_FAILURE, new AuthenticationFailureEvent($token, $lastException));
        }
        $lastException->setToken($token);
        throw $lastException;
    }