is_admin) { return redirect()->route('admin.dashboard'); } return view('admin.login'); } // Обработка формы входа // Auth::attempt(['email' => ...]) — стандартный способ Laravel через email // После входа проверяется is_admin: если false — немедленный Auth::logout() // session()->regenerate() — защита от session fixation атаки // redirect()->intended() — редирект на URL куда шёл до входа, иначе на дашборд public function login(Request $request): RedirectResponse { $request->validate([ 'email' => ['required', 'email'], 'password' => ['required', 'string'], ]); $credentials = [ 'email' => $request->email, 'password' => $request->password, ]; if (Auth::attempt($credentials, $request->boolean('remember'))) { if (Auth::user()->is_admin) { $request->session()->regenerate(); return redirect()->intended(route('admin.dashboard')); } Auth::logout(); } return back()->withErrors([ 'email' => 'Неверный email или пароль.', ])->onlyInput('email'); } // Выход: invalidate() уничтожает сессию, regenerateToken() обновляет CSRF-токен public function logout(Request $request): RedirectResponse { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('admin.login'); } }