src/EventSubscriber/JWTAuthenticationSuccessSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber;
  4. use App\Entity\User;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class JWTAuthenticationSuccessSubscriber implements EventSubscriberInterface
  9. {
  10.     public function __construct(
  11.         protected EntityManagerInterface $entityManager
  12.     )
  13.     {
  14.     }
  15.     public static function getSubscribedEvents()
  16.     {
  17.         return [
  18.             'lexik_jwt_authentication.on_authentication_success' => 'onAuthenticationSuccess',
  19.         ];
  20.     }
  21.     public function onAuthenticationSuccess(AuthenticationSuccessEvent $event)
  22.     {
  23.         $data $event->getData();
  24.         /** @var User $user */
  25.         $user $event->getUser();
  26.         if (!$user->firstLoginAt) {
  27.             $user->firstLoginAt = new \DateTime();
  28.         }
  29.         $user->lastLogin = new \DateTimeImmutable();
  30.         $this->entityManager->persist($user);
  31.         $this->entityManager->flush();
  32.     }
  33. }