<?php declare(strict_types=1);
namespace App\Security\Subscriber;
use App\Entity\User;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Http\Event\LoginSuccessEvent;
class VerifiedCheckSubscriber implements EventSubscriberInterface
{
private UrlGeneratorInterface $urlGenerator;
public function __construct(UrlGeneratorInterface $urlGenerator)
{
$this->urlGenerator = $urlGenerator;
}
public function onSuccess(LoginSuccessEvent $event): void
{
$user = $event->getUser();
if ($user instanceof User && !$user->isVerified()) {
$event->setResponse(new RedirectResponse($this->urlGenerator->generate('registration_validation')));
}
}
/**
* @return array<string, array<int|string, array<int|string, int|string>|int|string>|string>
*/
public static function getSubscribedEvents(): array
{
return [
LoginSuccessEvent::class => 'onSuccess',
];
}
}