<?php
// src/EventSubscriber/RequestSubscriber.php
namespace App\EventSubscriber;
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\Http\Util\TargetPathTrait;
use Symfony\Component\HttpFoundation\RedirectResponse;
class RequestSubscriber implements EventSubscriberInterface
{
use TargetPathTrait;
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
if('app_login' === $request->attributes->get('_route') || 'app_logout' === $request->attributes->get('_route')) {
return;
}
//TODO-AL-NP : inserire domini np
if(in_array($request->getHost(), ['testannonceslegales.lagazettefrance.fr', 'test.annonceslegales.pro','annonceslegales.lagazettefrance.fr', 'annonceslegales.pro'])) {
$arr = explode("/", $request->getPathInfo());
if(count($arr) > 1 && $arr[1] !== "al" && substr($arr[1], 0,1) !== "_" ) {
$response = new RedirectResponse('https://'.$request->getHost().$request->getBaseUrl().'/al'.$request->getPathInfo());
return $response->send();
}
}
if (!$event->isMasterRequest() || $request->isXmlHttpRequest() || 'app_login' === $request->attributes->get('_route')) {
return;
}
$this->saveTargetPath($this->session, 'main', $request->getUri());
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => ['onKernelRequest']
];
}
}