src/User/Infrastructure/Services/Security/LoginFormAuthenticator.php line 21
<?phpnamespace App\User\Infrastructure\Services\Security;use App\User\Infrastructure\DependencyInjection\Doctrine\QueryModel\UserRepository;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\RouterInterface;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\Exception\AuthenticationException;use Symfony\Component\Security\Core\Exception\UserNotFoundException;use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials;use Symfony\Component\Security\Http\Authenticator\Passport\Passport;use Symfony\Component\Security\Http\Util\TargetPathTrait;class LoginFormAuthenticator extends AbstractLoginFormAuthenticator{use TargetPathTrait;private $login_route;public function __construct(private UserRepository $userRepository, private RouterInterface $router){}//removable if you don't need to customize redirectionpublic function supports(Request $request) : bool{$this->login_route = $request->attributes->get('_route');return ($request->attributes->get('_route') === 'app_login')&& $request->isMethod('POST');}public function onAuthenticationSuccess(Request $request, TokenInterface $token, $firewallName): ?Response{if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) {return new RedirectResponse($targetPath);}return new RedirectResponse($this->router->generate('index_customer'));}public function onAuthenticationFailure(Request $request, AuthenticationException $exception): Response{return parent::onAuthenticationFailure($request, $exception);}protected function getLoginUrl(Request $request): string{return $this->router->generate('app_login');}public function authenticate(Request $request) : Passport{$username = $request->request->get('username');$password = $request->request->get('password');$csrf_token = $request->request->get('_csrf_token');return new Passport(new UserBadge($username, function ($userIdentifier){$user = $this->userRepository->findOneByUsernameOrEmail($userIdentifier);if (!$user){throw new UserNotFoundException();}return $user;}),new PasswordCredentials($password),[new CsrfTokenBadge('authenticate',$csrf_token),(new RememberMeBadge())->enable()]);}}