<?php
namespace App\EventListener;
use App\Entity\User;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken;
/**
* Classe RequestEventListener
*
* Cette classe est un écouteur d'événements qui réagit aux requêtes HTTP dans l'application.
* Elle est utilisée pour effectuer des actions ou des vérifications spécifiques lors de la réception de requêtes.
*
* Méthodes :
* - __construct: Constructeur de la classe, initialise les dépendances nécessaires pour l'écouteur.
* - onKernelRequest: Méthode appelée lors de l'événement de requête du noyau. Elle peut être utilisée
* pour effectuer des traitements ou des vérifications spécifiques sur les requêtes entrantes.
*
* @package App\EventListener
*/
class RequestEventListener
{
private TokenStorageInterface $tokenStorage;
public function __construct( TokenStorageInterface $tokenStorage )
{
$this->tokenStorage = $tokenStorage;
}
/**
* Méthode qui déconnecte les users connectés dont le compte != enabled
*
* @param RequestEvent $event
*
* @return void
*/
public function onKernelRequest( RequestEvent $event )
{
$token = $this->tokenStorage->getToken();
if ( $token instanceof PostAuthenticationToken ) {
/** @var User $user */
$user = $token->getUser();
if ( $user->getStatus() !== 'enabled' ) {
$this->tokenStorage->setToken( NULL );
$response = new RedirectResponse( '/' );
$event->setResponse( $response );
}
}
}
}