src/EventListener/JWTAuthenticationSuccessListener.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationFailureEvent;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use App\Entity\Usuari;
  7. class JWTAuthenticationSuccessListener
  8. {
  9.     public $requestStack;
  10.     public function __construct($requestStack)
  11.     {
  12.         $this->requestStack $requestStack;
  13.     }
  14.     /**
  15.      * @param AuthenticationSuccessEvent $event
  16.      */
  17.     public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
  18.     {
  19.         $data $event->getData();
  20.         $user $event->getUser();
  21.         if (!$user instanceof Usuari) {
  22.             return;
  23.         }
  24.         /**
  25.          * Si intenta accedir a API ENMOTIC comprova que l'usuari estigui actiu.
  26.          */
  27.         $request $this->requestStack->getCurrentRequest();
  28.         preg_match('/^api_enmotic/'$request->get('_route'), $matches);   
  29.         if(!empty($matches) && !$user->getActiu()){
  30.             $event->getResponse()->setStatusCode(401);
  31.             $event->setData([
  32.                 'code' => 401,
  33.                 'message' =>'Inactive user',
  34.             ]);
  35.         }
  36.       }
  37.     public function onAuthenticationFailureResponse(AuthenticationFailureEvent $event)
  38.     {
  39.         $request $this->requestStack->getCurrentRequest();
  40.         $data = [
  41.             'code'  => 401,
  42.             'message' => 'Bad credentials',
  43.         ];
  44.         $response = new JsonResponse($data401);
  45.         $event->setResponse($response);
  46.     }    
  47. }