validate(['email' => ['required', 'email'], 'password' => ['required', 'string']]); $key = Str::transliterate(Str::lower($credentials['email']).'|'.$request->ip()); if (RateLimiter::tooManyAttempts($key, 5)) { throw ValidationException::withMessages(['email' => __('ui.errors.throttle')]); } if (! Auth::attempt([...$credentials, 'status' => 'active'], $request->boolean('remember'))) { RateLimiter::hit($key, 60); throw ValidationException::withMessages(['email' => __('ui.errors.credentials')]); } if (! Auth::user()->canAccessCustomerPortal()) { RateLimiter::hit($key, 60); app(PortalSession::class)->terminate($request); throw ValidationException::withMessages(['email' => __('auth.portal_denied')]); } RateLimiter::clear($key); $request->session()->regenerate(); if (! in_array(Auth::user()->locale, SetLocale::SUPPORTED, true)) { Auth::user()->forceFill(['locale' => $request->session()->get('locale', 'tr')])->save(); } return redirect()->to($redirect->intended($request) ?? $redirect->landing()); } public function destroy(Request $request, PortalSession $sessions): RedirectResponse { $sessions->terminate($request); return redirect()->route('home'); } }