src/EventListener/RequestEventListener.php line 42

Open in your IDE?
  1. <?php
  2.     namespace App\EventListener;
  3.     use App\Entity\User;
  4.     use Symfony\Component\HttpFoundation\RedirectResponse;
  5.     use Symfony\Component\HttpKernel\Event\RequestEvent;
  6.     use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  7.     use Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken;
  8.     /**
  9.      * Classe RequestEventListener
  10.      *
  11.      * Cette classe est un écouteur d'événements qui réagit aux requêtes HTTP dans l'application.
  12.      * Elle est utilisée pour effectuer des actions ou des vérifications spécifiques lors de la réception de requêtes.
  13.      *
  14.      * Méthodes :
  15.      * - __construct: Constructeur de la classe, initialise les dépendances nécessaires pour l'écouteur.
  16.      * - onKernelRequest: Méthode appelée lors de l'événement de requête du noyau. Elle peut être utilisée
  17.      *   pour effectuer des traitements ou des vérifications spécifiques sur les requêtes entrantes.
  18.      *
  19.      * @package App\EventListener
  20.      */
  21.     class RequestEventListener
  22.     {
  23.         private TokenStorageInterface $tokenStorage;
  24.         public function __constructTokenStorageInterface $tokenStorage )
  25.         {
  26.             $this->tokenStorage $tokenStorage;
  27.         }
  28.         /**
  29.          * Méthode qui déconnecte les users connectés dont le compte != enabled
  30.          *
  31.          * @param RequestEvent $event
  32.          *
  33.          * @return void
  34.          */
  35.         public function onKernelRequestRequestEvent $event )
  36.         {
  37.             $token $this->tokenStorage->getToken();
  38.             if ( $token instanceof PostAuthenticationToken ) {
  39.                 /** @var User $user */
  40.                 $user $token->getUser();
  41.                 if ( $user->getStatus() !== 'enabled' ) {
  42.                     $this->tokenStorage->setTokenNULL );
  43.                     $response = new RedirectResponse'/' );
  44.                     $event->setResponse$response );
  45.                 }
  46.             }
  47.         }
  48.     }