<?php
// Met à jour la locale lors d'un changement d'utilisateur
namespace App\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Http\Event\SwitchUserEvent;
use Symfony\Component\Security\Http\SecurityEvents;
class SwitchUserSubscriber implements EventSubscriberInterface
{
public function onSwitchUser(SwitchUserEvent $event): void
{
$request = $event->getRequest();
if ($request->hasSession() && ($session = $request->getSession())) {
if ($request->query->has('_switch') && $request->query->get('_switch') == '_exit') {
$request->getSession()->remove('switch_locale');
$request->getSession()->set('_locale', $request->getSession()->get('_default_locale'));
}
if ($request->getSession()->has('switch_locale')) {
$request->getSession()->set('_locale', $request->getSession()->get('switch_locale'));
}
}
}
public static function getSubscribedEvents(): array
{
return [
// constant for security.switch_user
SecurityEvents::SWITCH_USER => 'onSwitchUser',
];
}
}