route('dashboard'); } return view('auth.login'); } /** * Handle login attempt with tenant and locale setup. */ public function login(Request $request) { $credentials = $request->validate([ 'email' => 'required|email', 'password' => 'required|string', ]); $remember = $request->boolean('remember'); if (Auth::attempt($credentials, $remember)) { $request->session()->regenerate(); $user = Auth::user(); // Set tenant context if ($user->tenant_id) { session(['tenant_id' => $user->tenant_id]); $user->load('tenant'); // Set tenant defaults if ($user->tenant) { session([ 'locale' => $user->locale ?? $user->tenant->default_locale ?? config('Vernova.defaults.locale', 'fa'), 'calendar' => $user->preferred_calendar ?? $user->tenant->default_calendar ?? config('Vernova.defaults.calendar', 'jalali'), 'currency' => $user->tenant->baseCurrency?->code ?? config('Vernova.defaults.currency', 'IRR'), ]); } } // Set application locale $locale = session('locale', $user->locale ?? config('Vernova.defaults.locale', 'fa')); app()->setLocale($locale); session(['locale' => $locale]); return redirect()->intended(route('dashboard')) ->with('success', __('auth.login_success')); } return back()->withErrors([ 'email' => __('auth.failed'), ])->onlyInput('email'); } /** * Log the user out. */ public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('login') ->with('success', __('auth.logout_success')); } }