davOnUrlTokenExtractor->extract($request); } public function authenticate(Request $request): Passport { $token = $this->davOnUrlTokenExtractor->extract($request); if (false === $token) { throw new MissingTokenException('JWT Token not found'); } try { $payload = $this->jwtManager->parse($token); } catch (JWTDecodeFailureException $e) { throw new InvalidTokenException('Invalid JWT Token', 0, $e); } $username = $payload['username'] ?? $payload['email'] ?? $payload['user_id'] ?? null; if (null === $username) { throw new InvalidTokenException('Invalid JWT Token: Username not found'); } return new SelfValidatingPassport(new UserBadge($username)); } public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response { // On success, let the request continue return null; } public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?Response { throw $exception; } }