src/Security/LoginFormAuthenticator.php line 25

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Security;
  4. use Symfony\Component\HttpFoundation\RedirectResponse;
  5. use Symfony\Component\Routing\RouterInterface;
  6. use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;
  7. use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;
  8. use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
  9. use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;
  10. use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials;
  11. use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  14. use Symfony\Component\HttpFoundation\Response;
  15. /**
  16.  * Authenticator pour la connexion classique email/password
  17.  * 
  18.  * Remplace l'ancien système avec LinkedIn OAuth et extension Chrome.
  19.  * Utilise le password sauvegardé lors de l'onboarding v4.
  20.  */
  21. class LoginFormAuthenticator extends AbstractLoginFormAuthenticator
  22. {
  23.     /** @var RouterInterface */
  24.     private $router;
  25.     public function __construct(RouterInterface $router)
  26.     {
  27.         $this->router $router;
  28.     }
  29.     /**
  30.      * Authentifie l'utilisateur avec email et password
  31.      */
  32.     public function authenticate(Request $request): Passport
  33.     {
  34.         $email $request->request->get('email''');
  35.         $password $request->request->get('password''');
  36.         $csrfToken $request->request->get('_csrf_token''');
  37.         return new Passport(
  38.             new UserBadge($email),
  39.             new PasswordCredentials($password),
  40.             [
  41.                 new RememberMeBadge(),
  42.                 new CsrfTokenBadge('authenticate'$csrfToken),
  43.             ]
  44.         );
  45.     }
  46.     /**
  47.      * Redirection après authentification réussie
  48.      */
  49.     public function onAuthenticationSuccess(Request $requestTokenInterface $tokenstring $firewallName): ?Response
  50.     {
  51.         // Rediriger vers le dashboard des suggestions
  52.         return new RedirectResponse($this->router->generate('suggestion.index'));
  53.     }
  54.     /**
  55.      * URL du formulaire de login
  56.      */
  57.     protected function getLoginUrl(Request $request): string
  58.     {
  59.         return $this->router->generate('app_login');
  60.     }
  61. }