* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Event; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Http\Authenticator\AuthenticatorInterface; use Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticator; use Symfony\Component\Security\Http\Authenticator\Passport\Passport; use Symfony\Contracts\EventDispatcher\Event; /** * This event is dispatched after an error during authentication. * * Listeners to this event can change state based on authentication * failure (e.g. to implement login throttling). * * @author Wouter de Jong */ class LoginFailureEvent extends Event { public function __construct( private AuthenticationException $exception, private AuthenticatorInterface $authenticator, private Request $request, private ?Response $response, private string $firewallName, private ?Passport $passport = null, ) { } public function getException(): AuthenticationException { return $this->exception; } public function getAuthenticator(): AuthenticatorInterface { return $this->authenticator instanceof TraceableAuthenticator ? $this->authenticator->getAuthenticator() : $this->authenticator; } public function getFirewallName(): string { return $this->firewallName; } public function getRequest(): Request { return $this->request; } public function setResponse(?Response $response): void { $this->response = $response; } public function getResponse(): ?Response { return $this->response; } public function getPassport(): ?Passport { return $this->passport; } }