<?php
namespace App\EventListener;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class ActivityListener
{
/**
* @var TokenStorageInterface
*/
protected $tokenStorage;
/**
* @var EntityManagerInterface
*/
protected $entityManager;
public function __construct(TokenStorageInterface $securityContext, EntityManagerInterface $entityManager)
{
$this->tokenStorage = $securityContext;
$this->entityManager = $entityManager;
}
/**
* @param ControllerArgumentsEvent $event
*/
public function onKernelController(ControllerEvent $event)
{
// Check token authentication availability
$sessionToken = $this->tokenStorage->getToken();
if ($sessionToken) {
$user = $sessionToken->getUser();
if (($user instanceof User)) {
if($event->getRequest()->get('_locale')) {
$user->setLocale($event->getRequest()->get('_locale'));
$this->entityManager->flush();
}
}
}
}
}