src/EventSubscriber/CheckVerifiedUserSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Users;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\Routing\RouterInterface;
  7. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  8. use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException;
  9. use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
  10. use Symfony\Component\Security\Http\Event\CheckPassportEvent;
  11. class CheckVerifiedUserSubscriber implements EventSubscriberInterface
  12. {
  13.     protected RouterInterface $router;
  14.     /**
  15.      * @param RouterInterface $router
  16.      */
  17.     public function __construct(RouterInterface $router)
  18.     {
  19.         $this->router $router;
  20.     }
  21.     /**
  22.      * @throws \Exception
  23.      */
  24.     public function onCheckPassport(CheckPassportEvent $event)
  25.     {
  26.         $passport $event->getPassport();
  27.         if (!$passport instanceof Passport) {
  28.             throw new \Exception('Unexpected passport type');
  29.         }
  30.         $user $passport->getUser();
  31.         if (!$user instanceof Users) {
  32.             throw new \Exception('Unexpected user type');
  33.         }
  34.         if ($user->getIsDeleted() === true)
  35.         {
  36.             throw new CustomUserMessageAuthenticationException(
  37.                 'Désolé votre compte a été banni'
  38.             );
  39.         }
  40.         if ($user->getStatus() === false){
  41.             throw new CustomUserMessageAuthenticationException(
  42.                 'Désolé votre compte est inactif, veuillez contacter l\'administrateur'
  43.             );
  44.         }
  45.     }
  46.     /**
  47.      * @inheritDoc
  48.      */
  49.     public static function getSubscribedEvents(): array
  50.     {
  51.         return [
  52.             CheckPassportEvent::class => ['onCheckPassport', -10],
  53.         ];
  54.     }
  55. }