mirror of
https://github.com/jbcr/core.git
synced 2026-04-28 11:13:10 +02:00
Preserve user's chosen locale in Editor
This commit is contained in:
committed by
Bob den Otter
parent
cc12a0fb8a
commit
360bcf5c9f
@@ -4,15 +4,25 @@ declare(strict_types=1);
|
||||
|
||||
namespace Bolt\Event\Subscriber;
|
||||
|
||||
use Bolt\Entity\User;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
|
||||
class LocaleSubscriber implements EventSubscriberInterface
|
||||
{
|
||||
/** @var string s */
|
||||
private $defaultLocale;
|
||||
|
||||
public function __construct(string $defaultLocale)
|
||||
{
|
||||
$this->defaultLocale = $defaultLocale;
|
||||
}
|
||||
|
||||
public function onKernelRequest(RequestEvent $event): void
|
||||
{
|
||||
$request = $event->getRequest();
|
||||
|
||||
if (! $request->hasPreviousSession()) {
|
||||
return;
|
||||
}
|
||||
@@ -25,6 +35,15 @@ class LocaleSubscriber implements EventSubscriberInterface
|
||||
$locale = $request->query->get('_locale');
|
||||
$request->getSession()->set('_locale', $locale);
|
||||
$request->setLocale($locale);
|
||||
} elseif ($request->attributes->get('zone', false) === 'backend') {
|
||||
/** @var User|null $user */
|
||||
$user = $request->getUser();
|
||||
if ($user && $user->getLocale()) {
|
||||
$locale = $user->getLocale();
|
||||
} else {
|
||||
$locale = $this->defaultLocale;
|
||||
}
|
||||
$request->setLocale($locale);
|
||||
} elseif ($request->getSession()->has('_locale')) {
|
||||
// if no explicit locale has been set on this request, use one from the session
|
||||
$request->setLocale($request->getSession()->get('_locale'));
|
||||
|
||||
Reference in New Issue
Block a user