src/EventListener/LocaleListener.php line 35

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Repository\ClientKeysRepository;
  5. use App\Repository\RestrictionsRepository;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  8. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  9. use Symfony\Contracts\Translation\TranslatorInterface;
  10. class LocaleListener
  11. {
  12.     /** @var ClientKeysRepository $clientKeysRepository */
  13.     private $clientKeysRepository;
  14.     /** @var RestrictionsRepository $restrictionsRepository */
  15.     private $restrictionsRepository;
  16.     /** @var TranslatorInterface */
  17.     private $translator;
  18.     public function __construct(
  19.         ClientKeysRepository $clientKeysRepository,
  20.         RestrictionsRepository $restrictionsRepository,
  21.         TranslatorInterface $translator
  22.     ) {
  23.         $this->clientKeysRepository $clientKeysRepository;
  24.         $this->restrictionsRepository $restrictionsRepository;
  25.         $this->translator $translator;
  26.     }
  27.     public function onKernelRequest(RequestEvent $event)
  28.     {
  29.         $request $event->getRequest();
  30.         if (
  31.             strpos($request->getUri(), 'api/') !== false &&
  32.             $event->isMasterRequest()
  33.         ) {
  34.             $restrictions $this->restrictionsRepository->findOrCreate();
  35.             if ($restrictions->getClientKeyNeeded()) {
  36.                 $clientKey $this->clientKeysRepository->getAllActiveKeys($request->headers->get('client-key'''));
  37.                 if ($clientKey == null) {
  38.                     throw new AccessDeniedHttpException($this->translator->trans('client_token_verification_error'));
  39.                 }
  40.             }
  41.         }
  42.         if (strlen((string) $acceptLanguage $request->headers->get('Accept-Language'))) {
  43.             //TAG:LANGUAGE
  44.             $request->setLocale($request->getPreferredLanguage(['ro''de''en''hr''sl''sr''sq''el''bs''mk''me']));
  45.             return;
  46.         }
  47.         $request->setLocale(getenv('DEFAULT_LOCALE'));
  48.     }
  49.     public function onKernelResponse(ResponseEvent $event)
  50.     {
  51.         $event->getResponse()->headers->set('Content-Language'$event->getRequest()->getLocale());
  52.     }
  53. }