src/EventSubscriber/LoginSubscriber.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\Security\Core\AuthenticationEvents;
  8. use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent;
  9. class LoginSubscriber implements EventSubscriberInterface
  10. {
  11.     private $em;
  12.     /**
  13.      * @param EntityManagerInterface $em
  14.      */
  15.     public function __construct(EntityManagerInterface $em)
  16.     {
  17.         $this->em $em;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             AuthenticationEvents::AUTHENTICATION_SUCCESS => 'onSuccessAuth'
  23.         ];
  24.     }
  25.     public function onSuccessAuth(AuthenticationSuccessEvent $event)
  26.     {
  27.         $currentUser $event->getAuthenticationToken()->getUser();
  28.         $userDB $this->em->getRepository(User::class)->findOneBy(['username' => $currentUser->getUserIdentifier()]);
  29.         if ($userDB) {
  30.             $userDB->setLastConnection(new \DateTimeImmutable());
  31.             $this->em->flush();
  32.         }
  33.     }
  34. }