<?php
declare(strict_types=1);
namespace App\EventSubscriber;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class JWTAuthenticationSuccessSubscriber implements EventSubscriberInterface
{
public function __construct(
protected EntityManagerInterface $entityManager
)
{
}
public static function getSubscribedEvents()
{
return [
'lexik_jwt_authentication.on_authentication_success' => 'onAuthenticationSuccess',
];
}
public function onAuthenticationSuccess(AuthenticationSuccessEvent $event)
{
$data = $event->getData();
/** @var User $user */
$user = $event->getUser();
if (!$user->firstLoginAt) {
$user->firstLoginAt = new \DateTime();
}
$user->lastLogin = new \DateTimeImmutable();
$this->entityManager->persist($user);
$this->entityManager->flush();
}
}