<?php
namespace App\EventListener;
use App\Entity\User;
use App\Repository\UserRepository;
use DateTimeImmutable;
use Doctrine\ORM\EntityManagerInterface;
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class AuthenticationSuccessListener
{
private $customer;
private UserRepository $userRepository;
public function __construct(
Security $security,
UserRepository $userRepository
) {
$this->userRepository =$userRepository;
$this->customer = $security->getUser();
}
public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
{
$data = $event->getData();
$user = $this->customer;
if (!$user instanceof UserInterface) {
return;
}
$userExist = $this->userRepository->find($user->getId());
if ($userExist->getIsDeleted()) {
$erroMessage = "You are not authoticated";
throw new UnauthorizedHttpException($erroMessage, $erroMessage);
}
elseif (!$userExist->getIsVerified()){
$client = HttpClient::create();
$response = $client->request('GET', 'https://e-lavandiere.ci/email/resend/'.$user->getId());
throw new HttpException( 401,"Compte non vérifié");
}
}
}