src/EventSubscriber/LoginSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Users;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Security\Http\Event\LoginSuccessEvent;
  7. /**
  8.  * Horodate la dernière connexion réussie.
  9.  *
  10.  * On écoute `LoginSuccessEvent` plutôt que d'écrire dans
  11.  * `UsersAuthenticator::onAuthenticationSuccess()` : l'événement couvre tous les
  12.  * authenticators, y compris ceux qui seraient ajoutés plus tard, et la reconnexion
  13.  * automatique par cookie « remember me » si elle est activée un jour.
  14.  */
  15. class LoginSubscriber implements EventSubscriberInterface
  16. {
  17.     public function __construct(private EntityManagerInterface $em) {}
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [LoginSuccessEvent::class => 'onLoginSuccess'];
  21.     }
  22.     public function onLoginSuccess(LoginSuccessEvent $event): void
  23.     {
  24.         $user $event->getUser();
  25.         if (!$user instanceof Users) {
  26.             return;
  27.         }
  28.         $user->registerLogin();
  29.         $this->em->flush();
  30.     }
  31. }