Exemplo n.º 1
0
 /**
  * 保存用户组设置
  *
  * @param ORM_Admin_Member_Data $member
  * @param boolean $is_add
  */
 protected function save_member_group_perm(ORM_Admin_Member_Data $member, $is_add)
 {
     $orm_group = new ORM_Admin_MemberGroup_Finder();
     if ($this->change_to_super_admin) {
         # 超管不需要设置组,将提升为超管的用户的组给清理掉
         $orm_group->db()->where('admin_id', $member->id)->delete($orm_group->ids_tablename());
     } else {
         # 新组
         $new_groups = $_POST['group_ids'] ? (array) $_POST['group_ids'] : array();
         asort($new_groups);
         if ($is_add) {
             # 新创建的用户
             # 添加的权限
             $new_diff_group = $new_groups;
             # 删除掉的权限
             $del_diff_group = array();
         } else {
             # 旧组
             $old_groups = $member->groups()->ids();
             asort($old_groups);
             # 添加的权限
             $new_diff_group = array_diff($new_groups, $old_groups);
             # 删除掉的权限
             $del_diff_group = array_diff($old_groups, $new_groups);
             # 相同的组
             $same_group = array_intersect($old_groups, $new_groups);
             if ($same_group) {
                 # 更新
                 foreach ($same_group as $group_id) {
                     $where = array('admin_id' => $member->id, 'group_id' => $group_id);
                     $data = array('admin_id' => $member->id, 'group_id' => $group_id, 'view_users' => $_POST['manage_groups']['g' . $group_id]['view_users'] ? 1 : 0, 'edit_users' => $_POST['manage_groups']['g' . $group_id]['edit_users'] ? 1 : 0, 'edit_users_password' => $_POST['manage_groups']['g' . $group_id]['edit_users_password'] ? 1 : 0, 'add_user' => $_POST['manage_groups']['g' . $group_id]['add_user'] ? 1 : 0, 'del_user' => $_POST['manage_groups']['g' . $group_id]['del_user'] ? 1 : 0, 'remove_user' => $_POST['manage_groups']['g' . $group_id]['remove_user'] ? 1 : 0, 'shield_user' => $_POST['manage_groups']['g' . $group_id]['shield_user'] ? 1 : 0, 'liftshield_user' => $_POST['manage_groups']['g' . $group_id]['liftshield_user'] ? 1 : 0, 'edit_group' => $_POST['manage_groups']['g' . $group_id]['edit_group'] ? 1 : 0);
                     $orm_group->db()->update($orm_group->ids_tablename(), $data, $where);
                 }
             }
         }
         if ($new_diff_group) {
             foreach ($new_diff_group as $group_id) {
                 $data = array('admin_id' => $member->id, 'group_id' => $group_id, 'view_users' => $_POST['manage_groups']['g' . $group_id]['view_users'] ? 1 : 0, 'edit_users' => $_POST['manage_groups']['g' . $group_id]['edit_users'] ? 1 : 0, 'edit_users_password' => $_POST['manage_groups']['g' . $group_id]['edit_users_password'] ? 1 : 0, 'add_user' => $_POST['manage_groups']['g' . $group_id]['add_user'] ? 1 : 0, 'del_user' => $_POST['manage_groups']['g' . $group_id]['del_user'] ? 1 : 0, 'remove_user' => $_POST['manage_groups']['g' . $group_id]['remove_user'] ? 1 : 0, 'shield_user' => $_POST['manage_groups']['g' . $group_id]['shield_user'] ? 1 : 0, 'liftshield_user' => $_POST['manage_groups']['g' . $group_id]['liftshield_user'] ? 1 : 0, 'edit_group' => $_POST['manage_groups']['g' . $group_id]['edit_group'] ? 1 : 0);
                 $orm_group->db()->values($data);
             }
             $orm_group->db()->columns(array_keys($data))->insert($orm_group->ids_tablename());
         }
         if ($del_diff_group) {
             $orm_group->db()->where('admin_id', $member->id)->in('group_id', $del_diff_group)->delete($orm_group->ids_tablename());
         }
     }
 }
Exemplo n.º 2
0
 /**
  * 删除权限组
  *
  * @param int $group_id
  */
 public function action_delete($group_id = 0)
 {
     $orm_group = new ORM_Admin_MemberGroup_Finder();
     if (!$group_id > 0) {
         $this->message('缺少参数', -1);
     }
     $group = $orm_group->get_by_id($group_id);
     if (!$group) {
         $this->message('指定的权限组不存在,可能已被删除', -1);
         $group = new ORM_Admin_MemberGroup_Data();
     }
     if (!$this->session()->member()->perm()->is_own('administrator.delete_group')) {
         $this->message('您不具备删除该权限组的权限', -1);
     }
     if ($group->project != Core::$project && !$this->session()->member()->perm()->is_super_perm()) {
         # 夸项目操作,只有超管才可以执行
         $this->message('您不可通过此URL执行本次操作', -1);
     }
     if ($group->members()->count()) {
         $this->message('此权限组含有成员,无法删除。请先清空该权限组成员后再删除', -1);
     }
     $status = $group->delete();
     if ($status) {
         $this->message('删除成功。', 1);
     } else {
         $this->message('未删除', 0);
     }
 }
Exemplo n.º 3
0
 /**
  * 删除当前管理员
  *
  * @see OOP_ORM_Data::delete()
  * @return integer 操作行数
  * @throws Exception
  */
 public function delete()
 {
     $id = $this->id;
     $rs = parent::delete();
     if ($rs) {
         # 删除管理员对应的用户组设置
         $orm_group = new ORM_Admin_MemberGroup_Finder();
         $orm_group->db()->where('admin_id', $id)->delete($orm_group->ids_tablename());
     }
     return $rs;
 }
Exemplo n.º 4
0
 /**
  * 获取管理组列表数据
  *
  * @param int $offset
  * @param int $limit
  * @return \ORM_Admin_MemberGroup_Result
  */
 public function get_group_list($project = null, $offset = 0, $limit = 20)
 {
     $orm_group = new \ORM_Admin_MemberGroup_Finder();
     if ($project) {
         $orm_group->driver()->where('project', $project);
     }
     if ($limit) {
         $orm_group->driver()->limit($limit)->offset($offset);
     }
     $orm_group->driver()->from('admin_member_group')->order_by('sort', 'DESC');
     return $orm_group->find();
 }
Exemplo n.º 5
0
 /**
  * 获取管理组列表数据
  *
  * @param int $offset
  * @param int $limit
  * @return ORM_Admin_MemberGroup_Result
  */
 public function get_group_list($project = null, $offset = 0, $limit = 20)
 {
     $orm_group = new ORM_Admin_MemberGroup_Finder();
     if ($project) {
         $orm_group->driver()->where('project', $project);
     }
     if ($limit) {
         $orm_group->driver()->limit($limit)->offset($offset);
     }
     $orm_group->driver()->from($this->config['group']['tablename'])->order_by('sort', 'DESC');
     return $orm_group->find();
 }