vendor/symfony/security-http/Authentication/AuthenticationUtils.php line 59

  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <[email protected]>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Security\Http\Authentication;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\RequestStack;
  13. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  14. use Symfony\Component\Security\Http\SecurityRequestAttributes;
  15. /**
  16.  * Extracts Security Errors from Request.
  17.  *
  18.  * @author Boris Vujicic <[email protected]>
  19.  */
  20. class AuthenticationUtils
  21. {
  22.     private RequestStack $requestStack;
  23.     public function __construct(RequestStack $requestStack)
  24.     {
  25.         $this->requestStack $requestStack;
  26.     }
  27.     public function getLastAuthenticationError(bool $clearSession true): ?AuthenticationException
  28.     {
  29.         $request $this->getRequest();
  30.         $authenticationException null;
  31.         if ($request->attributes->has(SecurityRequestAttributes::AUTHENTICATION_ERROR)) {
  32.             $authenticationException $request->attributes->get(SecurityRequestAttributes::AUTHENTICATION_ERROR);
  33.         } elseif ($request->hasSession() && ($session $request->getSession())->has(SecurityRequestAttributes::AUTHENTICATION_ERROR)) {
  34.             $authenticationException $session->get(SecurityRequestAttributes::AUTHENTICATION_ERROR);
  35.             if ($clearSession) {
  36.                 $session->remove(SecurityRequestAttributes::AUTHENTICATION_ERROR);
  37.             }
  38.         }
  39.         return $authenticationException;
  40.     }
  41.     public function getLastUsername(): string
  42.     {
  43.         $request $this->getRequest();
  44.         if ($request->attributes->has(SecurityRequestAttributes::LAST_USERNAME)) {
  45.             return $request->attributes->get(SecurityRequestAttributes::LAST_USERNAME'');
  46.         }
  47.         return $request->hasSession() ? $request->getSession()->get(SecurityRequestAttributes::LAST_USERNAME'') : '';
  48.     }
  49.     /**
  50.      * @throws \LogicException
  51.      */
  52.     private function getRequest(): Request
  53.     {
  54.         $request $this->requestStack->getCurrentRequest();
  55.         if (null === $request) {
  56.             throw new \LogicException('Request should exist so it can be processed for error.');
  57.         }
  58.         return $request;
  59.     }
  60. }