51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Laravel\Fortify\Http\Responses;
|
|
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Validation\ValidationException;
|
|
use Laravel\Fortify\Contracts\LockoutResponse as LockoutResponseContract;
|
|
use Laravel\Fortify\Fortify;
|
|
use Laravel\Fortify\LoginRateLimiter;
|
|
|
|
class LockoutResponse implements LockoutResponseContract
|
|
{
|
|
/**
|
|
* The login rate limiter instance.
|
|
*
|
|
* @var \Laravel\Fortify\LoginRateLimiter
|
|
*/
|
|
protected $limiter;
|
|
|
|
/**
|
|
* Create a new response instance.
|
|
*
|
|
* @param \Laravel\Fortify\LoginRateLimiter $limiter
|
|
* @return void
|
|
*/
|
|
public function __construct(LoginRateLimiter $limiter)
|
|
{
|
|
$this->limiter = $limiter;
|
|
}
|
|
|
|
/**
|
|
* Create an HTTP response that represents the object.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*/
|
|
public function toResponse($request)
|
|
{
|
|
return with($this->limiter->availableIn($request), function ($seconds) {
|
|
throw ValidationException::withMessages([
|
|
Fortify::username() => [
|
|
trans('auth.throttle', [
|
|
'seconds' => $seconds,
|
|
'minutes' => ceil($seconds / 60),
|
|
]),
|
|
],
|
|
])->status(Response::HTTP_TOO_MANY_REQUESTS);
|
|
});
|
|
}
|
|
}
|