validate([ 'email' => ['required', 'email'], 'password' => ['required', 'string'], ]); $throttleKey = Str::transliterate(Str::lower($request->input('email')).'|'.$request->ip()); if (RateLimiter::tooManyAttempts($throttleKey, 5)) { $seconds = RateLimiter::availableIn($throttleKey); throw ValidationException::withMessages([ 'email' => __('auth.throttle', ['seconds' => $seconds]), ]); } if (! Auth::guard('customer')->attempt( $request->only('email', 'password'), $request->boolean('remember') )) { RateLimiter::hit($throttleKey); throw ValidationException::withMessages([ 'email' => __('portal.invalid_credentials'), ]); } $customer = Auth::guard('customer')->user(); if (! $customer->portal_enabled) { Auth::guard('customer')->logout(); RateLimiter::hit($throttleKey); throw ValidationException::withMessages([ 'email' => __('portal.account_disabled'), ]); } RateLimiter::clear($throttleKey); $request->session()->regenerate(); return redirect()->intended(route('portal.home')); } public function logout(Request $request): RedirectResponse { Auth::guard('customer')->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('portal.login'); } }