<?php
namespace App\Security;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
class LogoutSuccessHandler implements LogoutSuccessHandlerInterface
{
private $router;
private $security;
private $em;
public function __construct(RouterInterface $router, Security $security, EntityManagerInterface $em)
{
$this->router = $router;
$this->security = $security;
$this->em = $em;
}
public function onLogoutSuccess(Request $request): RedirectResponse
{
// Ne pas modifier le rememberMeKey pour préserver la connexion persistante
// Le cookie REMEMBERME restera valide pour la prochaine connexion
// Préserver le token de l'URL si présent dans la session
$session = $request->getSession();
$token = $session->get('notification_token');
if ($token) {
// Rediriger vers login avec le token préservé
$session->remove('notification_token'); // Nettoyer après utilisation
return new RedirectResponse($this->router->generate('app_login', ['token' => $token]));
}
return new RedirectResponse($this->router->generate('home'));
}
}