<?php
namespace App\EventSubscriber;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\AuthenticationEvents;
use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent;
class LoginSubscriber implements EventSubscriberInterface
{
private $em;
/**
* @param EntityManagerInterface $em
*/
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public static function getSubscribedEvents(): array
{
return [
AuthenticationEvents::AUTHENTICATION_SUCCESS => 'onSuccessAuth'
];
}
public function onSuccessAuth(AuthenticationSuccessEvent $event)
{
$currentUser = $event->getAuthenticationToken()->getUser();
$userDB = $this->em->getRepository(User::class)->findOneBy(['username' => $currentUser->getUserIdentifier()]);
if ($userDB) {
$userDB->setLastConnection(new \DateTimeImmutable());
$this->em->flush();
}
}
}