src/EventListener/JwtListener.php line 51

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by IntelliJ IDEA.
  4.  * User: dogukan
  5.  * Date: 2019-01-29
  6.  * Time: 22:48
  7.  */
  8. namespace App\EventListener;
  9. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationFailureEvent;
  10. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. /**
  15.  * Class JwtListener
  16.  * @package App\EventListener
  17.  */
  18. class JwtListener
  19. {
  20.     /**
  21.      * @var TranslatorInterface
  22.      */
  23.     private $translator;
  24.     /**
  25.      * JwtListener constructor.
  26.      * @param TranslatorInterface $translator
  27.      */
  28.     public function __construct(TranslatorInterface $translator)
  29.     {
  30.         $this->translator $translator;
  31.     }
  32.     /**
  33.      * @param JWTCreatedEvent $event
  34.      */
  35.     public function onJWTCreated(JWTCreatedEvent $event): void
  36.     {
  37.         $data $event->getData();
  38.         $data['id'] = $event->getUser()->getId();
  39.         unset($data['roles']);
  40.         $event->setData($data);
  41.     }
  42.     /**
  43.      * @param AuthenticationFailureEvent $event
  44.      */
  45.     public function onAuthenticationFailure(AuthenticationFailureEvent $event): void
  46.     {
  47.         $data = [
  48.             'error' => [
  49.                 'code' => Response::HTTP_BAD_REQUEST,
  50.                 'message' => $this->translator->trans('Bad credentials')
  51.             ]
  52.         ];
  53.         $response = new JsonResponse($dataResponse::HTTP_BAD_REQUEST, ['WWW-Authenticate' => 'Bearer']);
  54.         $event->setResponse($response);
  55.     }
  56. }