]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | namespace Wallabag\CoreBundle\Event\Listener; | |
4 | ||
5 | use Symfony\Component\HttpFoundation\Session\Session; | |
6 | use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; | |
7 | ||
8 | /** | |
9 | * Stores the locale of the user in the session after the login. | |
10 | * If no locale are defined (if user doesn't change it from the login screen), override it with the user's config one. | |
11 | * | |
12 | * This can be used by the LocaleListener afterwards. | |
13 | * | |
14 | * @see http://symfony.com/doc/master/cookbook/session/locale_sticky_session.html | |
15 | */ | |
16 | class UserLocaleListener | |
17 | { | |
18 | /** | |
19 | * @var Session | |
20 | */ | |
21 | private $session; | |
22 | ||
23 | public function __construct(Session $session) | |
24 | { | |
25 | $this->session = $session; | |
26 | } | |
27 | ||
28 | public function onInteractiveLogin(InteractiveLoginEvent $event) | |
29 | { | |
30 | $user = $event->getAuthenticationToken()->getUser(); | |
31 | ||
32 | if (null !== $user->getConfig()->getLanguage() && null === $this->session->get('_locale')) { | |
33 | $this->session->set('_locale', $user->getConfig()->getLanguage()); | |
34 | } | |
35 | } | |
36 | } |