'Email wajib diisi.', 'email.email' => 'Format email tidak valid.', 'email.max' => 'Email tidak boleh lebih dari 255 karakter.', 'password.required' => 'Kata sandi wajib diisi.', 'password.min' => 'Kata sandi minimal terdiri dari 8 karakter.', ]; } /** * * @throws \Illuminate\Validation\ValidationException */ public function authenticate(): void { $this->validate(); $this->ensureIsNotRateLimited(); $user = \App\Models\User::where('email', $this->email)->first(); if (!$user) { RateLimiter::hit($this->throttleKey()); throw ValidationException::withMessages([ 'form.email' => 'Email tidak terdaftar.', ]); } if (!Auth::attempt($this->only(['email', 'password']), $this->remember)) { RateLimiter::hit($this->throttleKey()); throw ValidationException::withMessages([ 'form.password' => 'Kata sandi yang Anda masukkan salah.', ]); } RateLimiter::clear($this->throttleKey()); } protected function ensureIsNotRateLimited(): void { if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { return; } event(new Lockout(request())); $seconds = RateLimiter::availableIn($this->throttleKey()); throw ValidationException::withMessages([ 'form.email' => trans('auth.throttle', [ 'seconds' => $seconds, 'minutes' => ceil($seconds / 60), ]), ]); } protected function throttleKey(): string { return Str::transliterate(Str::lower($this->email).'|'.request()->ip()); } }