lib/Ntl/User/src/EventSubscriber/NtlUserEventSubscriber.php line 62
<?phpnamespace Ntl\UserBundle\EventSubscriber;use Doctrine\DBAL\Exception\DriverException;use Doctrine\ORM\EntityManagerInterface;use Ntl\UserBundle\Entity\NtlApiUser as User;use Psr\Log\LoggerInterface;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Event\ExceptionEvent;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Symfony\Component\Security\Http\Event\LogoutEvent;/*** Logout action hook.*/class NtlUserEventSubscriber implements EventSubscriberInterface{/*** Loging service.*/private LoggerInterface $logger;/*** Doctrine ntity manager service.*/private EntityManagerInterface $entityManager;/*** URL generation service.*/private UrlGeneratorInterface $urlGenerator;/*** Constructor.*/public function __construct(EntityManagerInterface $em, LoggerInterface $logger, UrlGeneratorInterface $urlGenerator){$this->logger = $logger;$this->entityManager = $em;$this->urlGenerator = $urlGenerator;}/*** Configure event subscriptions.*/public static function getSubscribedEvents(): array{return [ExceptionEvent::class => 'onKernelException',LogoutEvent::class => 'onLogout',];}/*** Kernel exception hook.** @return void*/public function onKernelException(ExceptionEvent $event){// You get the exception object from the received event$exception = $event->getThrowable();if ($exception instanceof DriverException) {// Customize your response object to display the exception details$response = new Response();$response->setStatusCode(Response::HTTP_BAD_REQUEST);$this->logger->error('Driver exception occured', [$exception->getMessage()]);// handling the default target path// @TODO redirect after successfull login through configuration parameterif ($event->getRequest()->isXmlHttpRequest()) {$response = new JsonResponse(['result' => false,'message' => $exception->getMessage(),],Response::HTTP_BAD_REQUEST);}// sends the modified response object to the event$event->setResponse($response);}}/*** Logout hook.** @return void*/public function onLogout(LogoutEvent $event){if ($event->getToken()) {$this->logger->info('User logout - closing NtlApi session', [$event->getToken()->getUserIdentifier()]);$this->entityManager->getRepository(User::class)->ntlapiCloseSession();}if ($event->getRequest()->isXmlHttpRequest()) {$response = new JsonResponse(['redirectTo' => $this->urlGenerator->generate('app_index'),]);$event->setResponse($response);}}}