<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Security;
class RedirectPWASubscriber implements EventSubscriberInterface
{
const PWA_QUERY_KEY_NAME="pwapath";
const REDIRECT_ABS_PATH = "/redirect/app";
/**
* @var Security
*/
private $security;
/**
*
*/
public function __construct(Security $security) {
$this->security = $security;
}
public function onKernelRequest(RequestEvent $event)
{
$req = $event->getRequest();
$session = $req->getSession();
$session->start();
$query = $req->query;
if ($query->has(self::PWA_QUERY_KEY_NAME)) {
$session->set(self::PWA_QUERY_KEY_NAME, $query->get(self::PWA_QUERY_KEY_NAME));
$session->save();
//dd($req->getSchemeAndHttpHost().$query->get(self::PWA_QUERY_KEY_NAME));
}
if ($session->has(self::PWA_QUERY_KEY_NAME)) {
//dd($session->all());
}
$user = $this->security->getUser();
//dd($user);
if (
!is_null($user) &&
$session->has(self::PWA_QUERY_KEY_NAME)
) {
$path = self::REDIRECT_ABS_PATH . $session->get(self::PWA_QUERY_KEY_NAME);
$host = $req->getSchemeAndHttpHost();
$url = $host.$path;
//dd($url);
$session->remove(self::PWA_QUERY_KEY_NAME);
$event->setResponse(new RedirectResponse($url));
}
}
public static function getSubscribedEvents()
{
return [
'kernel.request' => 'onKernelRequest',
];
}
}