Files
vision/src/EventSubscriber/LocaleSubscriber.php
Xbird 9f22f5b1ee V-Beta-1.0.0
Vision is out of alpha !
2022-02-02 17:46:29 +01:00

55 lines
1.6 KiB
PHP

<?php
namespace App\EventSubscriber;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Http\SecurityEvents;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class LocaleSubscriber implements EventSubscriberInterface
{
private $defaultLocale;
private $requestStack;
public function __construct(RequestStack $requestStack, ParameterBagInterface $params)
{
$this->defaultLocale = $params->get('kernel.default_locale');
$this->requestStack = $requestStack;
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
if (!$request->hasPreviousSession()) {
return;
}
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
}
public function onInteractiveLogin(InteractiveLoginEvent $event)
{
/**
* @var user $user
*/
$user = $event->getAuthenticationToken()->getUser();
if (null !== $user->getLocale()) {
$this->requestStack->getSession()->set('_locale', $user->getLocale());
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [['onKernelRequest', 20]],
SecurityEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin',
];
}
}