* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Firewall; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Psr\Log\LoggerInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Authentication\SimplePreAuthenticatorInterface; use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\SecurityEvents; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * SimplePreAuthenticationListener implements simple proxying to an authenticator. * * @author Jordi Boggiano */ class SimplePreAuthenticationListener implements ListenerInterface { private $tokenStorage; private $authenticationManager; private $providerKey; private $simpleAuthenticator; private $logger; private $dispatcher; /** * @param TokenStorageInterface $tokenStorage A TokenStorageInterface instance * @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance * @param string $providerKey * @param SimplePreAuthenticatorInterface $simpleAuthenticator A SimplePreAuthenticatorInterface instance * @param LoggerInterface|null $logger A LoggerInterface instance * @param EventDispatcherInterface|null $dispatcher An EventDispatcherInterface instance */ public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, SimplePreAuthenticatorInterface $simpleAuthenticator, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) { if (empty($providerKey)) { throw new \InvalidArgumentException('$providerKey must not be empty.'); } $this->tokenStorage = $tokenStorage; $this->authenticationManager = $authenticationManager; $this->providerKey = $providerKey; $this->simpleAuthenticator = $simpleAuthenticator; $this->logger = $logger; $this->dispatcher = $dispatcher; } /** * Handles basic authentication. */ public function handle(GetResponseEvent $event) { $request = $event->getRequest(); if (null !== $this->logger) { $this->logger->info('Attempting SimplePreAuthentication.', array('key' => $this->providerKey, 'authenticator' => get_class($this->simpleAuthenticator))); } if (null !== $this->tokenStorage->getToken() && !$this->tokenStorage->getToken() instanceof AnonymousToken) { return; } try { $token = $this->simpleAuthenticator->createToken($request, $this->providerKey); // allow null to be returned to skip authentication if (null === $token) { return; } $token = $this->authenticationManager->authenticate($token); $this->tokenStorage->setToken($token); if (null !== $this->dispatcher) { $loginEvent = new InteractiveLoginEvent($request, $token); $this->dispatcher->dispatch(SecurityEvents::INTERACTIVE_LOGIN, $loginEvent); } } catch (AuthenticationException $e) { $this->tokenStorage->setToken(null); if (null !== $this->logger) { $this->logger->info('SimplePreAuthentication request failed.', array('exception' => $e, 'authenticator' => get_class($this->simpleAuthenticator))); } if ($this->simpleAuthenticator instanceof AuthenticationFailureHandlerInterface) { $response = $this->simpleAuthenticator->onAuthenticationFailure($request, $e); if ($response instanceof Response) { $event->setResponse($response); } elseif (null !== $response) { throw new \UnexpectedValueException(sprintf('The %s::onAuthenticationFailure method must return null or a Response object', get_class($this->simpleAuthenticator))); } } return; } if ($this->simpleAuthenticator instanceof AuthenticationSuccessHandlerInterface) { $response = $this->simpleAuthenticator->onAuthenticationSuccess($request, $token); if ($response instanceof Response) { $event->setResponse($response); } elseif (null !== $response) { throw new \UnexpectedValueException(sprintf('The %s::onAuthenticationSuccess method must return null or a Response object', get_class($this->simpleAuthenticator))); } } } } __halt_compiler();----SIGNATURE:----M73cRjdwzmYS8TpEXLs6jSHjoOQWzMBM2rty1NAl0bdVGqTp5N1e6tSjdDOt22xpcIC9CY9hnKTxdolYcy8q7SRTvn0ABwHnpsqIajZRDRwV21dE44J2Mx7pc92sxIx5FGuhcByyC1+K/mGZHDuNe2XtjGtQbqnOvurK61zTk9xAnIPq06xv4cw9+JxhDr2GCT1eQWIEuPR1hYTg4ODJffCXDQ2DprIxRc0RKmCp+FdFsrsVaqC4OeDJPiPWD/ClJUD601IsuAXghr9bTpi7n/FACTRP6yEln2pDVPrrtA5BE4yJV+PREv3llRseOmGmugWN+sihi1sog6PJVub3MNiqx/H6q3Bu0xexuAwrPUDbmD9rP90+N0/1xev7F6G3L11OmKSPLhUcDlF6hzbVH8Yj8Pbn9VH0xf7Y1lRezW6/VW9TdaxBgQyCCitgbwY+Quzk4XQ0liSyvEzZ0gjBUBzICHke0Ei16SPLj6wYase4B8Cy09N8G4bJw0BuQYlK9sg3yJRDjn1H17LtxyXqmi0vqKDz5+3f6n7n2actmn9rMHzs0/4Yd3XArJdp3p3bQj1GLjrksCTlTyJJhv0vR2c9NgQQqLjnEiJMEZdqpdaJbSxtKbRATvhmLXgMgyhNeV8OBsY/nhIc0GcvmiRJaWqBSuUrVJUo2Ps7PxSPxdg=----ATTACHMENT:----MjMxOTcyNzY1MjEyOTY3MCA0NDk4NDQ0MDkxMzQwODk1IDk5MTY4NTQ5MjQyNjM1NQ==