src/Listener/JWTCreatedListener.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Listener;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use Symfony\Component\Security\Core\User\UserInterface;
  6. class JWTCreatedListener
  7. {
  8.     private RequestStack $requestStack;
  9.     public function __construct(RequestStack $requestStack)
  10.     {
  11.         $this->requestStack $requestStack;
  12.     }
  13.     public function __invoke(JWTCreatedEvent $event): void
  14.     {
  15.         $request $this->requestStack->getCurrentRequest();
  16.         // fallback si on n’est pas dans une requête HTTP (ex: CLI)
  17.         if (!$request) {
  18.             return;
  19.         }
  20.         $host $request->headers->get('X-Server-Host');
  21.         $user $event->getUser();
  22.         $userId $user->getId();
  23.         $payload $event->getData();
  24.         $payload['mercure'] = [
  25.             'subscribe' => [
  26.                 sprintf('https://%s/users/%d/notifications'$host$userId),
  27.             ],
  28.         ];
  29.         $event->setData($payload);
  30.     }
  31. }