src/Subscribers/UserLocaleSubscriber.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Subscribers;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\Security\Http\SecurityEvents;
  5. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  6. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  7. class UserLocaleSubscriber implements EventSubscriberInterface
  8. {
  9.     private $session;
  10.     public function __construct(SessionInterface $session)
  11.     {
  12.         $this->session $session;
  13.     }
  14.     public function onLogin(InteractiveLoginEvent $event)
  15.     {
  16.         $user $event->getAuthenticationToken()->getUser();
  17.         if( ! method_exists($user'getLocale') ){
  18.             $this->session->set('_locale''en');
  19.         }elseif (!is_null($user->getLocale())) {
  20.             $this->session->set('_locale'$user->getLocale());
  21.         }
  22.     }
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             SecurityEvents::INTERACTIVE_LOGIN => [
  27.                 ['onLogin'15]
  28.             ]
  29.         ];
  30.     }
  31. }