* * 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\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Http\Authentication\SimpleFormAuthenticatorInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Http\ParameterBagUtils; use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; use Psr\Log\LoggerInterface; /** * @author Jordi Boggiano */ class SimpleFormAuthenticationListener extends AbstractAuthenticationListener { private $simpleAuthenticator; private $csrfTokenManager; /** * @param TokenStorageInterface $tokenStorage A TokenStorageInterface instance * @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance * @param SessionAuthenticationStrategyInterface $sessionStrategy * @param HttpUtils $httpUtils An HttpUtils instance * @param string $providerKey * @param AuthenticationSuccessHandlerInterface $successHandler * @param AuthenticationFailureHandlerInterface $failureHandler * @param array $options An array of options for the processing of a * successful, or failed authentication attempt * @param LoggerInterface|null $logger A LoggerInterface instance * @param EventDispatcherInterface|null $dispatcher An EventDispatcherInterface instance * @param CsrfTokenManagerInterface|null $csrfTokenManager A CsrfTokenManagerInterface instance * @param SimpleFormAuthenticatorInterface|null $simpleAuthenticator A SimpleFormAuthenticatorInterface instance * * @throws \InvalidArgumentException In case no simple authenticator is provided */ public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, CsrfTokenManagerInterface $csrfTokenManager = null, SimpleFormAuthenticatorInterface $simpleAuthenticator = null) { if (!$simpleAuthenticator) { throw new \InvalidArgumentException('Missing simple authenticator'); } $this->simpleAuthenticator = $simpleAuthenticator; $this->csrfTokenManager = $csrfTokenManager; $options = array_merge(array( 'username_parameter' => '_username', 'password_parameter' => '_password', 'csrf_parameter' => '_csrf_token', 'csrf_token_id' => 'authenticate', 'post_only' => true, ), $options); parent::__construct($tokenStorage, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, $options, $logger, $dispatcher); } /** * {@inheritdoc} */ protected function requiresAuthentication(Request $request) { if ($this->options['post_only'] && !$request->isMethod('POST')) { return false; } return parent::requiresAuthentication($request); } /** * {@inheritdoc} */ protected function attemptAuthentication(Request $request) { if (null !== $this->csrfTokenManager) { $csrfToken = ParameterBagUtils::getRequestParameterValue($request, $this->options['csrf_parameter']); if (false === $this->csrfTokenManager->isTokenValid(new CsrfToken($this->options['csrf_token_id'], $csrfToken))) { throw new InvalidCsrfTokenException('Invalid CSRF token.'); } } if ($this->options['post_only']) { $username = ParameterBagUtils::getParameterBagValue($request->request, $this->options['username_parameter']); $password = ParameterBagUtils::getParameterBagValue($request->request, $this->options['password_parameter']); } else { $username = ParameterBagUtils::getRequestParameterValue($request, $this->options['username_parameter']); $password = ParameterBagUtils::getRequestParameterValue($request, $this->options['password_parameter']); } if (!\is_string($username) || (\is_object($username) && !\method_exists($username, '__toString'))) { throw new BadRequestHttpException(sprintf('The key "%s" must be a string, "%s" given.', $this->options['username_parameter'], \gettype($username))); } $username = trim($username); if (\strlen($username) > Security::MAX_USERNAME_LENGTH) { throw new BadCredentialsException('Invalid username.'); } $request->getSession()->set(Security::LAST_USERNAME, $username); $token = $this->simpleAuthenticator->createToken($request, $username, $password, $this->providerKey); return $this->authenticationManager->authenticate($token); } } __halt_compiler();----SIGNATURE:----hlWluOaG/3GD4SzGCvtdJo8659C0G/aaFuh9YN7AiZhv/8j5NpdA+UfySiHwDaYjYScvOgo4omoRKiOouEW61Q0W44/vqE94RS/AirLIJVfnYF1tgYh8nPuEt1ckYr4rQE6+G8+XrrfYDo3r8N5rt0MAt+1KVR3L/piCHes9+jF2dOrBknfnX7dqPy3AFA4EJ74wYy5Z8IRaE9NfuE8uLPYlWTVu4OOM5Y5e0OJJcfRjhONMVnfIIBP48HTc6pBBoUSlAHBR/iawRzRNfxpH05kTeBKe6h8oikvpOpNGpLBBORxPpuH99teoCyLg0c421H+ZSjXxXGrPLvT1j8x0ioG51ntBIqyvbb96pafXB0WwxZoDgUZxyYCRtP4Fz8LtqdzS56lMc6uOfdYtnywcNjFL12JRGsV3NxkWJfmXvITqKkLh1LKSPOonGrBCoe87Q0Hk5XKcIvJOOmbbdEqT0tGo97iT69BOmIqwtOK+oV8aWV1mpFT9kMiZwL+Zgo2IWows2Gtg/BOBW7TF7I/jsSI6WSesS8CWW8borVEjunvVZ+PCMqOQlmlD0YtdRJu6aadQ0Y/MBZrgHSSqVTxBD41r75XqgCAIsn0d0qBuScMdpN5P+rU/p/4UOb5iE/zM9KGUe8czGlaUHvLCouU6HIqTWdA7L/QBj2GTvRAEk7I=----ATTACHMENT:----ODUzMDQ2NjQwMTkxNDU3NiA1Mzk4NzY4OTk4MjQzMjk3IDkxNTM5NzQ1MzM4MTAzNjU=