<?php declare(strict_types=1);
namespace PPAdmin\EventSubscriber;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Security\Http\SecurityEvents;
/**
* Switch UI language to user language after login
*/
class AdminLoginSubscriber implements EventSubscriberInterface
{
public function __construct(
private RequestStack $request_stack
){}
public function onInteractiveLogin(InteractiveLoginEvent $event)
{
$user = $event->getAuthenticationToken()->getUser();
if(!$user instanceof Administrator){
return;
}
// override default locale if not set before
$session = $this->request_stack->getSession();
$session->set('_locale', $user->language);
}
public static function getSubscribedEvents(): array
{
return [
SecurityEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin'
];
}
}