namespace ; class extends AbstractLoginFormAuthenticator { use TargetPathTrait; public const LOGIN_ROUTE = 'app_login'; public function __construct(private UrlGeneratorInterface $urlGenerator) { } public function authenticate(Request $request): Passport { $ = $request->getPayload()->getString(''); $request->getSession()->set(SecurityRequestAttributes::LAST_USERNAME, $); return new Passport( new UserBadge($), new PasswordCredentials($request->getPayload()->getString('password')), [ new CsrfTokenBadge('authenticate', $request->getPayload()->getString('_csrf_token')), ] ); } public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response { if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) { return new RedirectResponse($targetPath); } // For example: // return new RedirectResponse($this->urlGenerator->generate('some_route')); throw new \Exception('TODO: provide a valid redirect inside '.__FILE__); } protected function getLoginUrl(Request $request): string { return $this->urlGenerator->generate(self::LOGIN_ROUTE); } }