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