src/Infra/Symfony/Security/EventSubscriber/LogLoginSuccessSubscriber.php line 25

  1. <?php
  2. declare(strict_types=1);
  3. namespace Infra\Symfony\Security\EventSubscriber;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Infra\Symfony\Persistance\Doctrine\Entity\LoginHistory;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Security\Http\Event\LoginSuccessEvent;
  8. class LogLoginSuccessSubscriber implements EventSubscriberInterface
  9. {
  10.     public function __construct(private readonly EntityManagerInterface $entityManager)
  11.     {
  12.     }
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [
  16.             LoginSuccessEvent::class => 'onLoginSuccess',
  17.         ];
  18.     }
  19.     public function onLoginSuccess(LoginSuccessEvent $event): void
  20.     {
  21.         $request $event->getRequest();
  22.         $loginHistory = new LoginHistory();
  23.         $user $event->getUser();
  24.         $loginHistory->setUser($user);
  25.         $loginHistory->setDate(new \DateTime('NOW'));
  26.         $loginHistory->setClientIp($request->getClientIp());
  27.         $this->entityManager->persist($loginHistory);
  28.         $this->entityManager->flush();
  29.     }
  30. }