$request =
$this->requestStack->
getMainRequest();
$request->attributes->
set(SecurityRequestAttributes::LAST_USERNAME,
$passport->
getBadge(UserBadge::
class)->
getUserIdentifier());
if ($this->limiter instanceof PeekableRequestRateLimiterInterface
) { $limit =
$this->limiter->
peek($request);
// Checking isAccepted here is not enough as peek consumes 0 token, it will
// be accepted even if there are 0 tokens remaining to be consumed. We check both
// anyway for safety in case third party implementations behave unexpectedly.
if (!
$limit->
isAccepted() || 0 ===
$limit->
getRemainingTokens()) { throw new TooManyLoginAttemptsAuthenticationException(ceil(($limit->
getRetryAfter()->
getTimestamp() -
time()) / 60
));
} } else { $limit =
$this->limiter->
consume($request);
if (!
$limit->
isAccepted()) { throw new TooManyLoginAttemptsAuthenticationException(ceil(($limit->
getRetryAfter()->
getTimestamp() -
time()) / 60
));
} } } public function onSuccessfulLogin(LoginSuccessEvent
$event): void
{