<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\User;
class UserAuthenticationSuccessSubscriber implements EventSubscriberInterface
{
private $entity_manager;
public function __construct(EntityManagerInterface $entity_manager)
{
$this->entity_manager = $entity_manager;
}
public function onSecurityAuthenticationSuccess(AuthenticationSuccessEvent $event): void
{
$user = $event->getAuthenticationToken()->getUser();
if ($user instanceof User)
{
$user->setLastLoginAt(new \DateTime('now', new \DateTimeZone(User::TIMEZONE)));
$this->entity_manager->persist($user);
$this->entity_manager->flush();
}
}
public static function getSubscribedEvents(): array
{
return [
'security.authentication.success' => 'onSecurityAuthenticationSuccess',
];
}
}