<?php
namespace App\EventListener;
use App\Helper\Config;
use App\Helper\JwtExpCheck;
use App\Controller\MainController;
use phpDocumentor\Reflection\Types\Boolean;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class RequestInterceptor extends AbstractController implements EventSubscriberInterface
{
private $_jwtExpCheck;
public function __construct(JwtExpCheck $jwtExpCheck)
{
$this->_jwtExpCheck = $jwtExpCheck;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => 'onKernelRequest',
];
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
$loggedUSer = $request->getSession()->get(MainController::COOKIE_NAME);
$params = [];
$route = $request->get('_route');
$page = $request->get('page');
$route_params = $request->get('_route_params');
if ($route != null) {
$params["redirectTo"] = $request->get('_route');
}
if ($page != null) {
$params["page"] = $request->get('page');
}
if ($route_params != null) {
$params = array_merge($params, $route_params);
}
if($loggedUSer && $this->isTokenExpired($loggedUSer->getToken())){
// dd('onRequest');
return $this->redirectToRoute(Config::APP_MAIN, $params);
}
}
/**
* Check if token is expired
*/
public function isTokenExpired($token = ""): bool{
return $this->_jwtExpCheck->isTokenExpired($token);
}
}