38 lines
1.0 KiB
PHP
38 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace App\EventSubscriber;
|
|
|
|
use App\Entity\User;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
|
use Symfony\Component\Security\Http\Event\LoginSuccessEvent;
|
|
|
|
class LoginSubscriber implements EventSubscriberInterface
|
|
{
|
|
|
|
private EntityManagerInterface $entityManager;
|
|
|
|
public function __construct(EntityManagerInterface $entityManager)
|
|
{
|
|
$this->entityManager = $entityManager;
|
|
}
|
|
|
|
public static function getSubscribedEvents()
|
|
{
|
|
return [
|
|
LoginSuccessEvent::class => 'onLoginSuccess',
|
|
];
|
|
}
|
|
|
|
public function onLoginSuccess(LoginSuccessEvent $event): void
|
|
{
|
|
$user = $event->getUser();
|
|
if($user) {
|
|
$user = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $user->getUserIdentifier()]);
|
|
$user->setLastConnection(new \DateTime('now', new \DateTimeZone('Europe/Paris')));
|
|
$this->entityManager->persist($user);
|
|
$this->entityManager->flush();
|
|
}
|
|
}
|
|
}
|