src/WebBundle/Listener/RequestListener.php line 45

Open in your IDE?
  1. <?php
  2. namespace WebBundle\Listener;
  3. use Exception;
  4. use FlexApp\Security\LoginFormAuthenticator;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. use WebBundle\Constant\CookieKeysConstant;
  10. use WebBundle\Controller\VacancyController;
  11. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  12. use Symfony\Component\Routing\Route;
  13. use WebBundle\Controller\SeoController;
  14. use WebBundle\Entity\User;
  15. use WebBundle\Handler\Locale\LocaleHandler;
  16. use WebBundle\Helper\App;
  17. use WebBundle\Helper\CookieHelper;
  18. use WebBundle\Helper\LocaleHelper;
  19. use WebBundle\Helper\UserHelper;
  20. use WebBundle\Service\LocationService;
  21. use function Symfony\Component\String\u;
  22. class RequestListener
  23. {
  24.     public TranslatorInterface $translator;
  25.     private LocationService $locationService;
  26.     public function __construct(TranslatorInterface $translatorLocationService $locationService)
  27.     {
  28.         $this->locationService $locationService;
  29.         $this->translator $translator;
  30.     }
  31.     /**
  32.      * onKernelRequest - 1st request processing function for processing inputed data
  33.      *              Обработчик первых входящих запросов, только прием/правка входящих запросов.
  34.      *
  35.      * @param RequestEvent $event
  36.      * @return Request
  37.      * @throws Exception
  38.      */
  39.     public function onKernelRequest(RequestEvent $event): Request
  40.     {
  41.         if ($event->getRequest()->attributes->get('_route') == 'app_buy_order' && $event->getRequest()->attributes->has('orderId')) {
  42.             $response = new RedirectResponse(App::generateUrl('app_order', ['hash' => $event->getRequest()->attributes->get('orderId')]));
  43.             $event->setResponse($response);
  44.             return $event->getRequest();
  45.         }
  46.         // SEO source of user origin, native or from searching
  47.         $request $event->getRequest();
  48.         $route $request->get('_route');
  49.         $paramsRoute $request->get('_route_params');
  50.         if ($route && !empty($paramsRoute['_locale'])) {
  51.             /* @var User $user */
  52.             $user App::getCurUser();
  53.             if ($route == LoginFormAuthenticator::LOGIN_ROUTE && $user) {
  54.                 $redirectUrl $request->query->get('redirect_url');
  55.                 if ($redirectUrl) {
  56.                     $response = new RedirectResponse(urldecode($redirectUrl));
  57.                 } else {
  58.                     $response = new RedirectResponse(App::generateUrl('app_home'));
  59.                 }
  60.                 $event->setResponse($response);
  61.                 return $request;
  62.             }
  63.             // отключаем локаль для сайтмапа
  64.             $requestUri $request->getRequestUri();
  65.             if (str_starts_with($requestUri'/sitemap')) {
  66.                 return $request;
  67.             }
  68.             if ($request->get('source') && CookieHelper::get(CookieKeysConstant::SOURCE) == null) {
  69.                 CookieHelper::set(CookieKeysConstant::SOURCE$request->get('source'));
  70.             } else {
  71.                 if (!empty($_SERVER['HTTP_REFERER'])) {
  72.                     if ($_SERVER['HTTP_REFERER'] == 'https://www.google.com/') {
  73.                         CookieHelper::set(CookieKeysConstant::SOURCE'google search');
  74.                     }
  75.                 }
  76.             }
  77.             if (!u($requestUri)->containsAny(['te_dev.php''no-forwarding=1'])) {
  78.                 $localeRequestHandler = new LocaleHandler($request$this->locationService);
  79.                 $response $localeRequestHandler->do();
  80.                 if (null !== $response) {
  81.                     CookieHelper::save($response);
  82.                     $event->setResponse($response);
  83.                     return $request;
  84.                 }
  85.             }
  86.             $countryCode CookieHelper::get(CookieKeysConstant::COUNTRY) ?? 'us';
  87.             // если нет еще системы счисления записываем
  88.             $meaKey in_array($countryCode, ['us''ca']) ? 'measureFt' 'measure';
  89.             $measure CookieHelper::get($meaKey);
  90.             if (!in_array($measureLocaleHelper::getMeasureList($countryCode))) {
  91.                 $measure LocaleHelper::getMeasureList($countryCode)[0];
  92.             }
  93.             if (CookieHelper::get($meaKey) != $measure) {
  94.                 CookieHelper::set($meaKey$measure, ['httponly' => false, ]);
  95.             }
  96.             // записываем Валюту под загруженный uri
  97.             $currency CookieHelper::get(CookieKeysConstant::CURRENCY);
  98.             if (!in_array($currencyLocaleHelper::getCurrencyList($countryCode))) {
  99.                 $currency LocaleHelper::getCurrencyList($countryCode)[0];
  100.             }
  101.             if (CookieHelper::get(CookieKeysConstant::CURRENCY) != $currency) {
  102.                 CookieHelper::set(CookieKeysConstant::CURRENCY$currency, ['httponly' => false, ]);
  103.             }
  104.             $userHelper UserHelper::getInstance();
  105.             if ($user && $user->getToken() != $userHelper->getToken()) {
  106.                 if ($user->getToken() != null) {
  107.                     $userHelper->setToken($user->getToken());
  108.                 }
  109.             }
  110.         }
  111.         return $request;
  112.     }
  113. }