public function all($params) { $params['order'] = isset($params['order']) ? $params['order'] : ['display_name|ASC']; $groups = Group::select("groups.*"); $groups = parent::execute($groups, $params); return $groups; }
/** * Gets All groups for datatables * @return Array json groups */ public function getgroups() { $groups = Group::select(array('groups.id', 'groups.name', 'groups.permissions', 'groups.created_at')); return Datatables::of($groups)->add_column('actions', ' <center> <a href="{{ URL::route(\'admin.editgroup\', array($id) )}}" class="btn btn-info btn-mini"><i class="icon-edit icon-white"></i> Edit </a> ')->make(); }
/** * 修改管理员信息 * * @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(); }