<?php
namespace App\EventListener;
use App\Entity\User;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Security;
class TokenFirebase implements EventSubscriberInterface
{
public function __construct(
private EntityManagerInterface $em,
private Security $security,
) {
}
public static function getSubscribedEvents()
{
return [
'kernel.request' => ['onKernelRequest', 0],
];
}
public function onKernelRequest(RequestEvent $event)
{
if (!$event->isMainRequest()) {
// don't do anything if it's not the main request
return;
}
$request = $event->getRequest();
$firebase_token = $request->cookies->get('Token_Firebase');
if ($firebase_token) {
/** @var User $currentUser */
$currentUser = $this->security->getUser();
if ($currentUser) {
$currentUser->setTokenFirebase($firebase_token);
$currentUser->setTokenFirebaseGeneratedAt(new DateTime());
$this->em->persist($currentUser);
$this->em->flush();
}
}
}
}