<?php
namespace Nen\Bundle\KennisbankPlatformBundle\EventSubscriber;
use Nen\Bundle\KennisbankPlatformBundle\Security\NenAuthenticator;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Http\Util\TargetPathTrait;
class RequestSubscriber implements EventSubscriberInterface
{
use TargetPathTrait;
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => ['onKernelRequest'],
];
}
public function onKernelRequest(RequestEvent $event): void
{
$request = $event->getRequest();
if (!$event->isMainRequest() || !$this->supported($request)) {
return;
}
$this->saveTargetPath($request->getSession(), 'main', $request->getUri());
}
private function supported(Request $request): bool
{
if ($request->isXmlHttpRequest()) {
return false;
}
if (NenAuthenticator::LOGIN_ROUTE === $request->attributes->get('_route')) {
return false;
}
if (stripos($request->getPathInfo(), '/image') !== false) {
return false;
}
if (stripos($request->getPathInfo(), '/_profiler') !== false) {
return false;
}
return true;
}
}