src/EventSubscriber/RedirectPWASubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpFoundation\RedirectResponse;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\Security\Core\Security;
  7. class RedirectPWASubscriber implements EventSubscriberInterface
  8. {
  9.     const PWA_QUERY_KEY_NAME="pwapath";
  10.     const REDIRECT_ABS_PATH "/redirect/app";
  11.     /**
  12.      * @var Security
  13.      */
  14.     private $security;
  15.     /**
  16.      * 
  17.      */
  18.     public function __construct(Security $security) {
  19.         $this->security $security;
  20.     }
  21.     public function onKernelRequest(RequestEvent $event)
  22.     {
  23.         $req $event->getRequest();
  24.         $session $req->getSession();
  25.         $session->start();
  26.         $query $req->query;
  27.         if ($query->has(self::PWA_QUERY_KEY_NAME)) {
  28.             $session->set(self::PWA_QUERY_KEY_NAME$query->get(self::PWA_QUERY_KEY_NAME));
  29.             $session->save(); 
  30.             //dd($req->getSchemeAndHttpHost().$query->get(self::PWA_QUERY_KEY_NAME));  
  31.         }
  32.         if ($session->has(self::PWA_QUERY_KEY_NAME)) {
  33.             //dd($session->all());
  34.         }
  35.         $user $this->security->getUser();
  36.         //dd($user);
  37.         if (
  38.             !is_null($user) &&
  39.             $session->has(self::PWA_QUERY_KEY_NAME
  40.         ) {
  41.             $path self::REDIRECT_ABS_PATH $session->get(self::PWA_QUERY_KEY_NAME);
  42.             $host $req->getSchemeAndHttpHost();
  43.             $url $host.$path;
  44.             //dd($url);
  45.             $session->remove(self::PWA_QUERY_KEY_NAME);
  46.             $event->setResponse(new RedirectResponse($url));
  47.         }
  48.     }
  49.     public static function getSubscribedEvents()
  50.     {
  51.         return [
  52.             'kernel.request' => 'onKernelRequest',
  53.         ];
  54.     }
  55. }