<?php 
 
namespace App\EventListener; 
 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Symfony\Component\Routing\RouterInterface; 
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; 
use Symfony\Component\Security\Http\Event\LogoutEvent; 
 
class LogoutListener 
{ 
    /** 
     * @var TokenStorageInterface 
     */ 
    private TokenStorageInterface $tokenStorage; 
 
    /** 
     * @var RouterInterface 
     */ 
    private RouterInterface $router; 
 
    public function __construct(TokenStorageInterface $tokenStorage, RouterInterface $router) 
    { 
        $this->tokenStorage = $tokenStorage; 
        $this->router = $router; 
    } 
 
    public function onLogoutEvent(LogoutEvent $logoutEvent) 
    { 
        $user = $this->tokenStorage->getToken()->getUser(); 
        $locale = $logoutEvent->getRequest()->get('_locale'); 
 
        if (is_object($user)) { 
            $roles = $user->getRoles(); 
            if (in_array('ROLE_BACKEND_USER', $roles, true) || $logoutEvent->getRequest()->get('_route') === "app_backend_logout") { 
                $logoutEvent->setResponse(new RedirectResponse($this->router->generate('backend_login', ['_locale' => $locale]))); 
            }else{ 
                $logoutEvent->setResponse(new RedirectResponse($this->router->generate('app_login', ['_locale' => $locale]))); 
            } 
        }else{ 
 
            $logoutEvent->setResponse(new RedirectResponse($this->router->generate('app_login', ['_locale' => $locale]))); 
        } 
 
 
    } 
}