(string) $request->query('redirect', route('webadmin.home')), ]); } public function login(Request $request): RedirectResponse { $validated = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required', 'string'], 'redirect' => ['nullable', 'string'], 'remember' => ['nullable', 'boolean'], ]); $user = User::query()->where('email', $validated['email'])->first(); if (!$user || !Hash::check($validated['password'], $user->password)) { return back()->withInput($request->except('password'))->with('error', '账号或密码不正确'); } Auth::login($user, (bool) ($validated['remember'] ?? false)); $request->session()->regenerate(); $redirect = $validated['redirect'] ?: route('webadmin.home'); return redirect()->to($redirect); } public function logout(Request $request): RedirectResponse { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('webadmin.login')->with('success', '已退出后台'); } public function showAccount(Request $request): View { return view('admin.account', [ 'user' => $request->user(), ]); } public function updatePassword(Request $request): RedirectResponse { $validated = $request->validate([ 'current_password' => ['required', 'current_password'], 'new_password' => ['required', 'string', 'min:8', 'confirmed', 'different:current_password'], ], [ 'current_password.required' => '请输入当前密码', 'current_password.current_password' => '当前密码不正确', 'new_password.required' => '请输入新密码', 'new_password.min' => '新密码至少需要 8 位', 'new_password.confirmed' => '两次输入的新密码不一致', 'new_password.different' => '新密码不能与当前密码相同', ]); $user = $request->user(); $user->forceFill([ 'password' => $validated['new_password'], ])->save(); $request->session()->regenerate(); return redirect()->route('webadmin.account')->with('success', '密码已更新'); } public function updateProfile(Request $request): RedirectResponse { $user = $request->user(); $validated = $request->validate([ 'name' => ['required', 'string', 'max:120'], 'email' => ['required', 'email', 'max:255', 'unique:users,email,' . $user->id], ], [ 'name.required' => '请输入用户名', 'email.required' => '请输入邮箱地址', 'email.email' => '邮箱格式不正确', 'email.unique' => '该邮箱已被其它用户使用', ]); $user->forceFill([ 'name' => trim($validated['name']), 'email' => trim($validated['email']), ])->save(); return redirect()->route('webadmin.account')->with('success', '账户资料已更新'); } }