src/EventListener/ControllerListener.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\OA2User;
  4. use App\Utils\TranslatorHelper;
  5. use Symfony\Component\DependencyInjection\ContainerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. use Symfony\Component\Translation\TranslatorInterface;
  11. class ControllerListener implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var TranslatorInterface
  15.      */
  16.     private $translator;
  17.     /**
  18.      * @var ContainerInterface
  19.      */
  20.     private $container;
  21.     public function __construct(
  22.         TranslatorInterface $translator,
  23.         ContainerInterface $container
  24.     ) {
  25.         $this->translator $translator;
  26.         $this->container $container;
  27.     }
  28.     public function onKernelController(FilterControllerEvent $event)
  29.     {
  30.         TranslatorHelper::init($this->translator);
  31.         if (!$this->container->has('security.token_storage')) {
  32.             return;
  33.         }
  34.         /** @var TokenStorageInterface $tokenStorage */
  35.         $tokenStorage $this->container->get('security.token_storage');
  36.         $token $tokenStorage->getToken();
  37.         if ($token === null) {
  38.             return;
  39.         }
  40.         /** @var OA2User $user */
  41.         $user $token->getUser();
  42.         if (!$user instanceof OA2User) {
  43.             return;
  44.         }
  45.         if (
  46.             $user->isBankUser()
  47.             || !$user->getClientUser()
  48.             || !($person $user->getClientUser()->getPerson())
  49.             || !($personSettings $person->getPersonSettings())
  50.         ) {
  51.             return;
  52.         }
  53.         $locale $personSettings->getLanguage();
  54.         $event->getRequest()->setLocale($locale);
  55.         $this->translator->setLocale($locale);
  56.     }
  57.     public static function getSubscribedEvents()
  58.     {
  59.         return [
  60.             KernelEvents::CONTROLLER => ['onKernelController', -100],
  61.         ];
  62.     }
  63. }