<?php
declare(strict_types=1);
namespace App\EventSubscriber;
use App\Entity\CommunicationLog;
use App\Entity\Property;
use App\Entity\Redirect;
use App\Entity\User;
use App\Exception\BadSecurityTokenException;
use App\Repository\RedirectRepository;
use App\Service\LogService;
use App\Service\PropertyService;
use App\Service\UserService;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
class KernelSubscriber implements EventSubscriberInterface
{
private RedirectRepository $redirectRepository;
public function __construct(
RedirectRepository $redirectRepository
)
{
$this->redirectRepository = $redirectRepository;
}
public function onKernelRequest(RequestEvent $event)
{
if (!$event->isMasterRequest()) {
return;
}
$path = ltrim($event->getRequest()->getPathInfo(),'/');
$path = rtrim($path,'/');
$redirect = $this->redirectRepository->findOneBy(['source' => $path]);
if (!$redirect instanceof Redirect) {
return;
}
$targetUrl = 'https://vsechnykurzy.cz/'.ltrim($redirect->getTarget(),"/");
$event->setResponse(new RedirectResponse($targetUrl));
}
public static function getSubscribedEvents()
{
return [
'kernel.request' => ['onKernelRequest', 300],
];
}
}