<?php
/**
* Created by IntelliJ IDEA.
* User: dogukan
* Date: 2019-01-29
* Time: 22:48
*/
namespace App\EventListener;
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationFailureEvent;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* Class JwtListener
* @package App\EventListener
*/
class JwtListener
{
/**
* @var TranslatorInterface
*/
private $translator;
/**
* JwtListener constructor.
* @param TranslatorInterface $translator
*/
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
/**
* @param JWTCreatedEvent $event
*/
public function onJWTCreated(JWTCreatedEvent $event): void
{
$data = $event->getData();
$data['id'] = $event->getUser()->getId();
unset($data['roles']);
$event->setData($data);
}
/**
* @param AuthenticationFailureEvent $event
*/
public function onAuthenticationFailure(AuthenticationFailureEvent $event): void
{
$data = [
'error' => [
'code' => Response::HTTP_BAD_REQUEST,
'message' => $this->translator->trans('Bad credentials')
]
];
$response = new JsonResponse($data, Response::HTTP_BAD_REQUEST, ['WWW-Authenticate' => 'Bearer']);
$event->setResponse($response);
}
}