コード例 #1
0
ファイル: AdminController.php プロジェクト: smartgirl001/Test
 /**
  * 修改管理员信息
  *
  * @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();
 }