comparison stubs/default/app/Http/Requests/Auth/LoginRequest.php @ 0:90e38de8f2ba

Initial Commit
author luka
date Wed, 13 Aug 2025 22:17:20 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:90e38de8f2ba
1 <?php
2
3 namespace App\Http\Requests\Auth;
4
5 use Illuminate\Auth\Events\Lockout;
6 use Illuminate\Foundation\Http\FormRequest;
7 use Illuminate\Support\Facades\Auth;
8 use Illuminate\Support\Facades\RateLimiter;
9 use Illuminate\Support\Str;
10 use Illuminate\Validation\ValidationException;
11
12 class LoginRequest extends FormRequest
13 {
14 /**
15 * Determine if the user is authorized to make this request.
16 */
17 public function authorize(): bool
18 {
19 return true;
20 }
21
22 /**
23 * Get the validation rules that apply to the request.
24 *
25 * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
26 */
27 public function rules(): array
28 {
29 return [
30 'email' => ['required', 'string', 'email'],
31 'password' => ['required', 'string'],
32 ];
33 }
34
35 /**
36 * Attempt to authenticate the request's credentials.
37 *
38 * @throws \Illuminate\Validation\ValidationException
39 */
40 public function authenticate(): void
41 {
42 $this->ensureIsNotRateLimited();
43
44 if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
45 RateLimiter::hit($this->throttleKey());
46
47 throw ValidationException::withMessages([
48 'email' => trans('auth.failed'),
49 ]);
50 }
51
52 RateLimiter::clear($this->throttleKey());
53 }
54
55 /**
56 * Ensure the login request is not rate limited.
57 *
58 * @throws \Illuminate\Validation\ValidationException
59 */
60 public function ensureIsNotRateLimited(): void
61 {
62 if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) {
63 return;
64 }
65
66 event(new Lockout($this));
67
68 $seconds = RateLimiter::availableIn($this->throttleKey());
69
70 throw ValidationException::withMessages([
71 'email' => trans('auth.throttle', [
72 'seconds' => $seconds,
73 'minutes' => ceil($seconds / 60),
74 ]),
75 ]);
76 }
77
78 /**
79 * Get the rate limiting throttle key for the request.
80 */
81 public function throttleKey(): string
82 {
83 return Str::transliterate(Str::lower($this->string('email')).'|'.$this->ip());
84 }
85 }