src/EventListener/ActivityListener.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
  6. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  7. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  8. class ActivityListener
  9. {
  10.     /**
  11.      * @var TokenStorageInterface
  12.      */
  13.     protected $tokenStorage;
  14.     /**
  15.      * @var EntityManagerInterface
  16.      */
  17.     protected $entityManager;
  18.     public function __construct(TokenStorageInterface $securityContextEntityManagerInterface $entityManager)
  19.     {
  20.         $this->tokenStorage $securityContext;
  21.         $this->entityManager $entityManager;
  22.     }
  23.     /**
  24.      * @param ControllerArgumentsEvent $event
  25.      */
  26.     public function onKernelController(ControllerEvent $event)
  27.     {
  28.         // Check token authentication availability
  29.         $sessionToken $this->tokenStorage->getToken();
  30.         if ($sessionToken) {
  31.             $user $sessionToken->getUser();
  32.             if (($user instanceof User)) {
  33.                 if($event->getRequest()->get('_locale')) {
  34.                     $user->setLocale($event->getRequest()->get('_locale'));
  35.                     $this->entityManager->flush();
  36.                 }
  37.             }
  38.         }
  39.     }
  40. }