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 __construct( TokenStorageInterface $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 onKernelRequest( RequestEvent $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->setToken( NULL );
  43. $response = new RedirectResponse( '/' );
  44. $event->setResponse( $response );
  45. }
  46. }
  47. }
  48. }