/** * 修改管理员信息 * * @param int $id * @return \Illuminate\Http\Response */ public function edit(Request $request, $id) { // $oAdmin = Admin::findOrFail($id); $aGroups = Admin::get_groups($id); // get method if ($request->isMethod('get')) { $oAllGroup = Group::all(); return view('admin.manager.edit', ['admin' => $oAdmin, 'belongs' => $aGroups, 'all_groups' => $oAllGroup]); } // post method // inputs $username = trim($request->input('username')); $password = trim($request->input('password')); $email = $request->input('email'); $groups = $request->input('groups'); $groups = empty($groups) ? array() : array_filter(array_unique($groups)); $oCurrentAdmin = Admin::findOrFail(session('admin_id')); $aCurrentGroups = Admin::get_groups(session('admin_id')); if (in_array(1, $aGroups) && !in_array(1, $aCurrentGroups)) { // 用户拥有超级管理员权限,而自己没有 session()->flash('msg_error', '修改失败:对方属于超级管理员组'); return back(); } if (Admin::is_last_superadmin($id) && !in_array(1, $groups)) { // 用户已经是最后一个超级管理员时无法移除 array_unshift($groups, 1); session()->flash('msg_error', '已经是最后一个超级管理员,无法从超级管理员组中移除'); return back(); } // $validate = $this->edit_validator(['username' => $username, 'password' => $password, 'email' => $email]); if ($validate->fails()) { session()->flash('msg_error', '输入格式不正确'); return back(); } if ($oAdmin->username != $username && Admin::exists_username($username)) { session()->flash('msg_error', '此用户名已存在'); return back(); } /** * 处理修改用户所属的组 */ $aAllGroups = Group::select(['id'])->get()->toArray(); $aAllGroups = array_column($aAllGroups, 'id'); $temp_length = count($groups); for ($i = 0; $i < $temp_length; $i++) { $groups[$i] = intval($groups[$i]); if (!in_array($groups[$i], $aAllGroups)) { // 数据库中不存在该组 unset($groups[$i]); continue; } if (!(in_array(1, $aCurrentGroups) || in_array($groups[$i], $aCurrentGroups))) { // 无法给予自己也没有的权限组,除非自己属于超级管理员组 unset($groups[$i]); session()->flash('msg_error', '抱歉,部分组添加失败.首先你要是该组组员'); continue; } } $oAdmin->username = $username; $oAdmin->email = $email; if ($password) { $oAdmin->password = password_encrypt($password); } $oAdmin->save(); Admin::update_groups($groups, $id); session()->flash('msg_success', '修改成功'); return back(); }