src/Bundles/ApiBundle/EventListener/JWTCreatedListener.php line 41

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Bundles\ApiBundle\EventListener;
  4. use DateTime;
  5. use Exception;
  6. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. class JWTCreatedListener
  9. {
  10.     /**
  11.      * @var array
  12.      */
  13.     private array $requestData = [];
  14.     /**
  15.      * @param RequestStack $requestStack
  16.      */
  17.     public function __construct(RequestStack $requestStack)
  18.     {
  19.         $currentRequest $requestStack->getCurrentRequest();
  20.         if (!empty($currentRequest)) {
  21.             $json $currentRequest->getContent();
  22.         }
  23.         if (!empty($json) && is_string($json)) {
  24.             $this->requestData json_decode($jsontrue);
  25.         }
  26.     }
  27.     /**
  28.      * @param JWTCreatedEvent $event
  29.      * @return void
  30.      *
  31.      * @throws Exception
  32.      */
  33.     public function onJWTCreated(JWTCreatedEvent $event): void
  34.     {
  35.         $days = (isset($this->requestData['remember']) && $this->requestData['remember'] === true)
  36.             ? '+30 day'
  37.             '+1 day';
  38.         $expiration     = new DateTime($days);
  39.         $payload        $event->getData();
  40.         $payload['exp'] = $expiration->getTimestamp();
  41.         $event->setData($payload);
  42.     }
  43. }