* * 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\HttpFoundation\Request; use Psr\Log\LoggerInterface; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; 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\Http\ParameterBagUtils; use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException; use Symfony\Component\Security\Core\Security; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * UsernamePasswordFormAuthenticationListener is the default implementation of * an authentication via a simple form composed of a username and a password. * * @author Fabien Potencier */ class UsernamePasswordFormAuthenticationListener extends AbstractAuthenticationListener { private $csrfTokenManager; 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) { parent::__construct($tokenStorage, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, array_merge(array( 'username_parameter' => '_username', 'password_parameter' => '_password', 'csrf_parameter' => '_csrf_token', 'csrf_token_id' => 'authenticate', 'post_only' => true, ), $options), $logger, $dispatcher); $this->csrfTokenManager = $csrfTokenManager; } /** * {@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); return $this->authenticationManager->authenticate(new UsernamePasswordToken($username, $password, $this->providerKey)); } } __halt_compiler();----SIGNATURE:----SCpWWKV/5lG6CBraUhm5LF1hrA2NgR2slsbyrS9n0cidd2f5wV31oiKtdxlxAVIYCpfchx2eM8NIfoNuDvp10hGB+F5ev8iYF0YmlH9/eWTG+d+bEEJiFkaIHB7E7DUW8hTv6Q0EavHTA+0ulzPIOVVVi2P0NCHIqlhqep1rTrAdu2HBnq0mwPw2Zp95HmJpe/c97fyhXB84SWs6xxqNAB04wTYArmh2yDaIUbyZV+LsOCjPci5C+2ae20OL5VzvW6MaqX4FbtJIzWTcHpAku/pD3Y2cWjCjQMEarUqLhBoTlY/fnA914Bnn3lurp8X1XniCvqacnLLnpbVChe//2qU1LuL/7TaC3ePOeFhlInjlNA6plUBSV7eVQnpfzU8q89GgWnUqgdv31xP2xbaIGOY2ZRg2aqjWKwRK7VfCPlF+4Heoq+vkb/7yvX7qPnPfFEncYuN5DqJV6hEj+GGEcMeUILqcb+HPaCoNbrS9DW5IxzDC7u+HaIOrdThIBcTW0PR8tw5dpsks6fzfryrV61OPK7/A1L3NoIPfwtv3wum1PyinBQCLjdmyHfcjfYsNJGgABwsfT/4BjuNUFI3B94rOl2VekX/Z7AIBZ//TrfkkevlV7Rryx6XkJfBwJLW0odTWFzhprDO7o1T0zBpL5Q0WJFXdSt6SXgf8RA5ZVfI=----ATTACHMENT:----MjI1NTc4NDIzMTU0Njg0OSAxMzY3OTkyNDI3ODczMjY0IDExNzUzNzMzMDYzOTAzNjk=