["required", "string", "min:5"], "password" => ["required", "string"], ]; } /** * Attempt to authenticate the request's credentials. * * @return void * * @throws \Illuminate\Validation\ValidationException */ public function authenticate() { $this->ensureIsNotRateLimited(); if ( !Auth::attempt( $this->only("username", "password"), $this->boolean("remember") ) ) { RateLimiter::hit($this->throttleKey()); throw ValidationException::withMessages([ "username" => __("auth.failed"), ]); } RateLimiter::clear($this->throttleKey()); } /** * Ensure the login request is not rate limited. * * @return void * * @throws \Illuminate\Validation\ValidationException */ public function ensureIsNotRateLimited() { if (!RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { return; } event(new Lockout($this)); $seconds = RateLimiter::availableIn($this->throttleKey()); throw ValidationException::withMessages([ "email" => trans("auth.throttle", [ "seconds" => $seconds, "minutes" => ceil($seconds / 60), ]), ]); } /** * Get the rate limiting throttle key for the request. * * @return string */ public function throttleKey() { return Str::lower($this->input("email")) . "|" . $this->ip(); } }