<?php
namespace App\EventListener;
use App\Service\UserConnectionService;
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\User\UserInterface;
class AuthenticationSuccessListener
{
private UserConnectionService $userConnectionService;
private Request $request;
public function __construct(
UserConnectionService $userConnectionService,
RequestStack $requestStack
) {
$this->userConnectionService = $userConnectionService;
$this->request = $requestStack->getCurrentRequest();
}
/**
* Triggers when the authentication is successful.
*
* @param AuthenticationSuccessEvent $event The event.
*/
public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
{
$data = $event->getData();
$user = $event->getUser();
if (!$user instanceof UserInterface) {
return;
}
$this->userConnectionService->createForUser($user, $this->request->getClientIp());
$event->setData($data);
}
}