src/EventListener/LogoutListener.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpFoundation\RedirectResponse;
  4. use Symfony\Component\Routing\RouterInterface;
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use Symfony\Component\Security\Http\Event\LogoutEvent;
  7. class LogoutListener
  8. {
  9.     /**
  10.      * @var TokenStorageInterface
  11.      */
  12.     private TokenStorageInterface $tokenStorage;
  13.     /**
  14.      * @var RouterInterface
  15.      */
  16.     private RouterInterface $router;
  17.     public function __construct(TokenStorageInterface $tokenStorageRouterInterface $router)
  18.     {
  19.         $this->tokenStorage $tokenStorage;
  20.         $this->router $router;
  21.     }
  22.     public function onLogoutEvent(LogoutEvent $logoutEvent)
  23.     {
  24.         $user $this->tokenStorage->getToken()->getUser();
  25.         $locale $logoutEvent->getRequest()->get('_locale');
  26.         if (is_object($user)) {
  27.             $roles $user->getRoles();
  28.             if (in_array('ROLE_BACKEND_USER'$rolestrue) || $logoutEvent->getRequest()->get('_route') === "app_backend_logout") {
  29.                 $logoutEvent->setResponse(new RedirectResponse($this->router->generate('backend_login', ['_locale' => $locale])));
  30.             }else{
  31.                 $logoutEvent->setResponse(new RedirectResponse($this->router->generate('app_login', ['_locale' => $locale])));
  32.             }
  33.         }else{
  34.             $logoutEvent->setResponse(new RedirectResponse($this->router->generate('app_login', ['_locale' => $locale])));
  35.         }
  36.     }
  37. }