src/Listener/RequestListener.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Listener;
  3. use App\Entity\Currency;
  4. use App\Entity\UrlRedirect;
  5. use App\Services\UserTokenManager;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use App\Entity\User;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  10. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  11. use Symfony\Component\Routing\Exception\RouteNotFoundException;
  12. use Symfony\Component\Routing\RouterInterface;
  13. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  14. use Symfony\Component\Security\Csrf\TokenStorage\TokenStorageInterface;
  15. class RequestListener
  16. {
  17.     private $router;
  18.     private $tokenStorage;
  19.     private $em;
  20.     private $session;
  21.     private $userTokenManager;
  22.     public function __construct(UserTokenManager $userTokenManagerRouterInterface $router\Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface $tokenStorageEntityManagerInterface $emSessionInterface $session)
  23.     {
  24.         $this->router $router;
  25.         $this->tokenStorage $tokenStorage;
  26.         $this->em $em;
  27.         $this->userTokenManager $userTokenManager;
  28.         $this->session $session;
  29.     }
  30.     public function onKernelRequest(\Symfony\Component\HttpKernel\Event\RequestEvent $event)
  31.     {
  32.         if (\Symfony\Component\HttpKernel\HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
  33.             // don't do anything if it's not the master request
  34.             return;
  35.         }
  36.         //set locale according to detectee values
  37.         if ($this->session->get('_locale')) {
  38.             $request $event->getRequest();
  39.             $request->setLocale($this->session->get('_locale'));
  40.         } else {
  41.             if ($_SERVER['SERVER_NAME'] == 'ckdev.centrumkrzesel.pl' or $_SERVER['SERVER_NAME'] == 'ckprod.centrumkrzesel.pl' or $_SERVER['SERVER_NAME'] == 'www.centrumkrzesel.pl' or $_SERVER['SERVER_NAME'] == 'centrumkrzesel.pl') {
  42.                 $currency $this->em->getRepository(Currency::class)->findOneBy(['isDefault'=>true'deletedBy'=>null]);
  43.                 $this->session->set('currency'$currency);
  44.                 $this->session->set('_locale''pl');
  45.                 $request $event->getRequest();
  46.                 $request->setLocale('pl');
  47.                 /*
  48.                 $currency = $this->em->getRepository(Currency::class)->find(3);
  49.                 $this->session->set('currency', $currency);
  50.                 $this->session->set('_locale', 'sk');
  51.                 $request = $event->getRequest();
  52.                 $request->setLocale('sk');
  53.                 */
  54.                 /*
  55.                 $currency = $this->em->getRepository(Currency::class)->find(4);
  56.                 $this->session->set('currency', $currency);
  57.                 $this->session->set('_locale', 'ro');
  58.                 $request = $event->getRequest();
  59.                 $request->setLocale('ro');
  60.                 */
  61.             } elseif ($_SERVER['SERVER_NAME'] == 'dev.stolicky24.sk' or $_SERVER['SERVER_NAME'] == 'stolicky24.sk' or $_SERVER['SERVER_NAME'] == 'www.stolicky24.sk') {
  62.                 $currency $this->em->getRepository(Currency::class)->find(3);
  63.                 $this->session->set('currency'$currency);
  64.                 $this->session->set('_locale''sk');
  65.                 $request $event->getRequest();
  66.                 $request->setLocale('sk');
  67.             } elseif ($_SERVER['SERVER_NAME'] == 'mobila24.ro' or $_SERVER['SERVER_NAME'] == 'www.mobila24.ro') {
  68.                 $currency $this->em->getRepository(Currency::class)->find(4);
  69.                 $this->session->set('currency'$currency);
  70.                 $this->session->set('_locale''ro');
  71.                 $request $event->getRequest();
  72.                 $request->setLocale('ro');
  73.             } elseif ($_SERVER['SERVER_NAME'] == 'dev.ezidle.cz' or $_SERVER['SERVER_NAME'] == 'ro.centrumkrzesel.pl') {
  74.                 throw new NotFoundHttpException('Error 404');
  75.                 exit();
  76.             } else {
  77.                 $currency $this->em->getRepository(Currency::class)->find(2);
  78.                 $this->session->set('currency'$currency);
  79.                 $this->session->set('_locale''cz');
  80.                 $request $event->getRequest();
  81.                 $request->setLocale('cz');
  82.             }
  83.         }
  84.         //redirects 301 configured
  85.         $url $this->curPageURL();
  86.         $find $this->em->getRepository(UrlRedirect::class)->findOneBy(['deletedBy'=>null'from'=>$url]);
  87.         if ($find and $find->getTo()) {
  88.             $response = new RedirectResponse($find->getTo(), 301);
  89.             $event->setResponse($response);
  90.         }
  91.         ////
  92.         if ($this->tokenStorage->getToken() and $this->tokenStorage->getToken()->getUser() and $this->tokenStorage->getToken()->getUser() instanceof User and $this->tokenStorage->getToken()->getUser()->hasRole('ROLE_ADMIN')) {
  93.             /** @var $user User */
  94.             $user $this->tokenStorage->getToken()->getUser();
  95.             $requestUri $request->getRequestUri();
  96.             $pass_validity_days 90;
  97.             $token $this->tokenStorage->getToken();
  98.             if ($token && $token->getUser() instanceof User && $pass_validity_days and $user->hasRole('ROLE_ADMIN')) {
  99.                 /** @var $user User */
  100.                 $user $this->tokenStorage->getToken()->getUser();
  101.                 $today = new \DateTime();
  102.                 $defaultPasswordChangeAt = new \DateTime();
  103.                 $defaultPasswordChangeAt->modify('-'.$pass_validity_days.' days');
  104.                 $passwordChangeAt $user->getPasswordChangedAt() instanceof \DateTime $user->getPasswordChangedAt() : $defaultPasswordChangeAt;
  105.                 $days_since_last_change $passwordChangeAt->diff($today);
  106.                 if ((int)$days_since_last_change->format('%a') >= $pass_validity_days and mb_strpos($requestUri'profile') === false and mb_strpos($requestUri'change-user-password') === false and mb_strpos($requestUri'logout') === false) {
  107.                     $response = new RedirectResponse($this->router->generate('fos_user_change_password_ext'));
  108.                     $event->setResponse($response);
  109.                 }
  110.             }
  111.         } else {
  112.             if (!strstr($this->curPageURL(), '_profiler') and !strstr($this->curPageURL(), '_wdt')) {
  113.                 $url $this->curPageURL();
  114.                 $cookieToken $request->cookies->get('user_token');
  115.                 /** @var $user User */
  116.                 $user $this->userTokenManager->findUserByCookie($cookieToken);
  117.                 if ($user and $user->getDeletedBy() === null and $user->hasRole('ROLE_ADMIN')) {
  118.                     $token = new UsernamePasswordToken($usernull'main'$user->getRoles());
  119.                     $this->tokenStorage->setToken($token);
  120.                     $response = new RedirectResponse(
  121.                         $this->router->generate('orders').'?auto_login=1'
  122.                     );
  123.                     $event->setResponse($response);
  124.                 }
  125.             }
  126.         }
  127.     }
  128.     private function curPageURL() {
  129.         $pageURL 'http';
  130.         if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
  131.         $pageURL .= "://";
  132.         if ($_SERVER["SERVER_PORT"] != "80") {
  133.             $pageURL .= $_SERVER["HTTP_HOST"]."".$_SERVER["REQUEST_URI"];
  134.         } else {
  135.             $pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
  136.         }
  137.         return $pageURL;
  138.     }
  139. }