src/EventSubscriber/AdminLoginSubscriber.php line 19

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace PPAdmin\EventSubscriber;
  3. use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  7. use Symfony\Component\Security\Http\SecurityEvents;
  8. /**
  9.  * Switch UI language to user language after login
  10.  */
  11. class AdminLoginSubscriber implements EventSubscriberInterface
  12. {
  13.     public function __construct(
  14.         private RequestStack $request_stack
  15.     ){}
  16.     public function onInteractiveLogin(InteractiveLoginEvent $event)
  17.     {
  18.         $user $event->getAuthenticationToken()->getUser();
  19.         if(!$user instanceof Administrator){
  20.             return;
  21.         }
  22.         // override default locale if not set before
  23.         $session $this->request_stack->getSession();
  24.         $session->set('_locale'$user->language);
  25.     }
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             SecurityEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin'
  30.         ];
  31.     }
  32. }