src/Security/LogoutSuccessHandler.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\HttpFoundation\RedirectResponse;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\RouterInterface;
  7. use Symfony\Component\Security\Core\Security;
  8. use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
  9. class LogoutSuccessHandler implements LogoutSuccessHandlerInterface
  10. {
  11.   private $router;
  12.   private $security;
  13.   private $em;
  14.   public function __construct(RouterInterface $routerSecurity $securityEntityManagerInterface $em)
  15.   {
  16.     $this->router $router;
  17.     $this->security $security;
  18.     $this->em $em;
  19.   }
  20.   public function onLogoutSuccess(Request $request): RedirectResponse
  21.   {
  22.     // Ne pas modifier le rememberMeKey pour préserver la connexion persistante
  23.     // Le cookie REMEMBERME restera valide pour la prochaine connexion
  24.     
  25.     // Préserver le token de l'URL si présent dans la session
  26.     $session $request->getSession();
  27.     $token $session->get('notification_token');
  28.     
  29.     if ($token) {
  30.       // Rediriger vers login avec le token préservé
  31.       $session->remove('notification_token'); // Nettoyer après utilisation
  32.       return new RedirectResponse($this->router->generate('app_login', ['token' => $token]));
  33.     }
  34.     
  35.     return new RedirectResponse($this->router->generate('home'));
  36.   }
  37. }