src/EventListener/AuthenticationSuccessListener.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User;
  4. use App\Repository\UserRepository;
  5. use DateTimeImmutable;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  8. use Symfony\Component\HttpClient\HttpClient;
  9. use Symfony\Component\HttpKernel\Exception\HttpException;
  10. use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
  11. use Symfony\Component\Security\Core\Security;
  12. use Symfony\Component\Security\Core\User\UserInterface;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. class AuthenticationSuccessListener
  15. {
  16.     private $customer;
  17.     private UserRepository $userRepository;
  18.     public function __construct(
  19.         Security $security,
  20.          UserRepository $userRepository
  21.     ) {
  22.         $this->userRepository =$userRepository;
  23.         $this->customer =  $security->getUser();
  24.     }
  25.     public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
  26.     {
  27.         $data $event->getData();
  28.         $user $this->customer;
  29.         if (!$user instanceof UserInterface) {
  30.             return;
  31.         }
  32.         $userExist $this->userRepository->find($user->getId());
  33.         if ($userExist->getIsDeleted()) {
  34.             $erroMessage "You are not authoticated";
  35.             throw new UnauthorizedHttpException($erroMessage$erroMessage);
  36.         }
  37.         elseif (!$userExist->getIsVerified()){
  38.             $client HttpClient::create();
  39.             $response $client->request('GET''https://e-lavandiere.ci/email/resend/'.$user->getId());
  40.             throw new HttpException401,"Compte non vérifié");
  41.         }
  42.     }
  43. }