src/EventSubscriber/AccountSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Exception;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\Routing\RouterInterface;
  9. use Symfony\Component\Security\Core\Exception\UserNotFoundException;
  10. use Symfony\Component\Security\Core\Security;
  11. class AccountSubscriber implements EventSubscriberInterface
  12. {
  13.     private $router;
  14.     private $security;
  15.     const ADMIN_LOGIN "admin_login";
  16.     public function __construct(RouterInterface $routerSecurity $security)
  17.     {
  18.         $this->router $router;
  19.         $this->security $security;
  20.     }
  21.     public function onKernelResponse(ResponseEvent $event)
  22.     {
  23.         $user $this->security->getUser();
  24.         // On vérifie si l'utilisateur est connecté et si son compte est activé
  25.         if ($user && $user->getActivated() == false) {
  26.             $route 'must_confirm_email';
  27.             if ($route === $event->getRequest()->get('_route') || 'resend_email_confirmation' === $event->getRequest()->get('_route')) {
  28.                 
  29.                 return;
  30.             }
  31.             $url $this->router->generate($route);
  32.             $response = new RedirectResponse($url);
  33.             
  34.             $event->setResponse($response);
  35.         }
  36.     }
  37.     public static function getSubscribedEvents()
  38.     {
  39.         return [
  40.             // On doit définir une priorité élevée
  41.             KernelEvents::RESPONSE => [['onKernelResponse'20]],
  42.         ];
  43.     }
  44. }