src/EventListener/AuthenticationFailureListener.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Repository\LocationRepository;
  4. use App\Repository\UserLocationRepository;
  5. use App\Repository\UserRepository;
  6. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationFailureEvent;
  7. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  8. use Lexik\Bundle\JWTAuthenticationBundle\Response\JWTAuthenticationFailureResponse;
  9. class AuthenticationFailureListener
  10. {
  11.     private UserRepository $userRepository;
  12.     public function __construct(UserRepository $userRepository)
  13.     {
  14.         $this->userRepository $userRepository;
  15.     }
  16.     public function onAuthenticationFailureResponse(AuthenticationFailureEvent $event)
  17.     {
  18.         $message 'Bad credentials, please verify that your email/password are correctly set';
  19.         $request $event->getRequest();
  20.         $contant json_decode($request->getContent());
  21.         if ($contant->username) {
  22.             $username $contant->username;
  23.         } else {
  24.             $username $request->get('_username');
  25.         }
  26.         // Accede al nombre de usuario desde la peticiĆ³n HTTP
  27.         if ($username){
  28.             $user $this->userRepository->findOneBy(['email' => $username]);
  29.             if ($user && $user->getIsAccessMicrosoft()) {
  30.                 $message 'Your account is enabled to use SSO only.';
  31.             }
  32.         }
  33.         $response = new JWTAuthenticationFailureResponse($message);
  34.         $event->setResponse($response);
  35.     }
  36. }