src/EventSubscriber/LoginSubscriber.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Security\Core\Security;
  6. use Symfony\Component\Security\Http\Event\LoginSuccessEvent;
  7. class LoginSubscriber implements EventSubscriberInterface
  8. {
  9. private $security;
  10. private $en;
  11. public function __construct(Security $security, EntityManagerInterface $en)
  12. {
  13. $this->security = $security;
  14. $this->en = $en;
  15. }
  16. public function onLogin(LoginSuccessEvent $event): void
  17. {
  18. $user = $this->security->getUser();
  19. // Vérifie que l'utilisateur est bien une entité (et pas null)
  20. if ($user) {
  21. $user->setLastLoginAt(new \DateTime());
  22. $this->en->flush();
  23. }
  24. }
  25. public static function getSubscribedEvents(): array
  26. {
  27. return [
  28. LoginSuccessEvent::class => 'onLogin',
  29. ];
  30. }
  31. }