src/Event/LoginListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Event;
  3. use App\Entity\User;
  4. use FOS\UserBundle\Model\UserManagerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  7. use Symfony\Component\Security\Http\SecurityEvents;
  8. class LoginListener implements EventSubscriberInterface
  9. {
  10.     private $userManager;
  11.     public function __construct(UserManagerInterface $userManager)
  12.     {
  13.         $this->userManager $userManager;
  14.     }
  15.     public static function getSubscribedEvents()
  16.     {
  17.         return [
  18.             SecurityEvents::INTERACTIVE_LOGIN => 'onSecurityInteractiveLogin',
  19.         ];
  20.     }
  21.     public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
  22.     {
  23.         $user $event->getAuthenticationToken()->getUser();
  24.         if ($user instanceof User) {
  25.             $request $event->getRequest();
  26.             $timezoneDetect $request->request->get('_timezone_detect');
  27.             if ($timezoneDetect != null) {
  28.                 $user->setTimezone($timezoneDetect);
  29.                 $this->userManager->updateUser($user);
  30.             }
  31.         }
  32.     }
  33. }