src/EventSubscriber/CheckUserListener.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Security\AccessDeniedHandler;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. class CheckUserListener implements EventSubscriberInterface
  11. {
  12.     protected $authChecker;
  13.     protected $entityManager;
  14.     protected $tokenStorage;
  15.     public function __construct(AuthorizationCheckerInterface $authCheckerEntityManagerInterface $entityManagerTokenStorageInterface $tokenStorage)
  16.     {
  17.         $this->authChecker $authChecker;
  18.         $this->entityManager $entityManager;
  19.         $this->tokenStorage $tokenStorage;
  20.     }
  21.     public function onKernelRequest()
  22.     {
  23.         if ($this->tokenStorage->getToken() != '' && $this->tokenStorage->getToken()->getUser()->getIsActive() == false) {
  24.             throw new AccessDeniedHttpException("Account is blocked");
  25.         }
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             KernelEvents::CONTROLLER => 'onKernelRequest',
  31.         ];
  32.     }
  33. }