<?php
#Redirecting to the Last Accessed Page with TargetPathTrait
namespace App\EventSubscriber;
use App\Security\Users;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Http\Util\TargetPathTrait;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class RequestSubscriber implements EventSubscriberInterface
{
use TargetPathTrait;
private $session;
private $router;
public function __construct(SessionInterface $s, RouterInterface $r, TokenStorageInterface $t)
{
$this->router = $r;
$this->session = $s;
$this->tokenStorage = $t;
}
public function onKernelRequest(RequestEvent $event): void
{
$request = $event->getRequest();
if (
!$event->isMainRequest()
|| $request->isXmlHttpRequest()
|| 'app_login' === $request->attributes->get('_route')
#|| 'home_page' === $request->attributes->get('_route')
|| ($this->isUserLogged() instanceof Users)
) {
#non รจ richiesta l'auth
return;
}
else{
if($event->isMainRequest() && !$this->isUserLogged())
{
$this->session->set("login-referal", $request->attributes->get('_route'));
}
}
}
private function isUserLogged()
{
if($this->tokenStorage->getToken())
{
$user = $this->tokenStorage->getToken()->getUser();
return $user;
}
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => ['onKernelRequest']
];
}
}