<?php
namespace App\EventSubscriber;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Http\Event\LogoutEvent;
class LogoutSubscriber implements EventSubscriberInterface
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public static function getSubscribedEvents(): array
{
return [
LogoutEvent::class => 'onLogout',
];
}
public function onLogout(LogoutEvent $event): void
{
$token = $event->getToken();
if (!$token) {
return;
}
$admin = $token->getUser();
if (!$admin instanceof \App\Entity\Admin) {
return;
}
$connection = $this->entityManager->getConnection();
date_default_timezone_set("Asia/Calcutta");
$cli_dt = date("Y-m-d H:i:s");
$connection->executeStatement(
"UPDATE admin SET user_sts='0' WHERE admin_id = ?",
[$admin->getAdminId()]
);
$connection->executeStatement(
"UPDATE login_log SET update_dt = ? WHERE designation='client' AND admin_id = ? AND update_dt = '0000-00-00 00:00:00'",
[$cli_dt, $admin->getAdminId()]
);
$request = $event->getRequest();
$request->getSession()->clear();
}
}