<?php
namespace App\EventSubscriber;
use App\Entity\User;
use App\Service\FirebaseTokenFactory;
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
use Lexik\Bundle\JWTAuthenticationBundle\Events;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class JWTSubscriber implements EventSubscriberInterface
{
public function __construct(private FirebaseTokenFactory $firebaseTokenFactory)
{
}
public function onAuthenticationSuccess(AuthenticationSuccessEvent $event): void
{
$user = $event->getUser();
if (!$user instanceof User) {
return;
}
$data = $event->getData();
$data['firebase_token'] = $this->firebaseTokenFactory->createCustomToken((string) $user->getId());
$event->setData($data);
}
public static function getSubscribedEvents(): array
{
return [
Events::AUTHENTICATION_SUCCESS => 'onAuthenticationSuccess',
];
}
}