<?php
namespace App\EventSubscriber;
use App\Entity\User;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
class RedirectSubscriber implements EventSubscriberInterface
{
private Security $security;
private UrlGeneratorInterface $urlGenerator;
public function __construct(Security $security, UrlGeneratorInterface $urlGenerator)
{
$this->security = $security;
$this->urlGenerator = $urlGenerator;
}
public function onKernelRequest(RequestEvent $event): void
{
$path = $event->getRequest()->getPathInfo();
$user = $this->security->getUser();
if ($path == '/' && $user instanceof User && in_array('ROLE_CUSTOMER', $user->getRoles())) {
$response = new RedirectResponse($this->urlGenerator->generate('app_supply_customer'));
$event->setResponse($response);
}
}
public static function getSubscribedEvents(): array
{
return [
'kernel.request' => 'onKernelRequest',
];
}
}