admin['roleid'])) { // 不是超级管理员 if (dr_is_app('cqx')) { $this->myrole = \Phpcmf\Service::M('content', 'cqx')->myrole(); } else { $this->myrole = $this->admin['roleid']; } $this->role = \Phpcmf\Service::M('auth')->get_role_all($this->myrole); $this->mywhere = '`uid` IN (select uid from `'.\Phpcmf\Service::M()->dbprefix('admin_role_index').'` where roleid in ('.implode(',', $this->myrole).'))'; } else { $this->role = \Phpcmf\Service::M('auth')->get_role_all(); $this->myrole = []; } \Phpcmf\Service::V()->assign([ 'menu' => \Phpcmf\Service::M('auth')->_admin_menu( [ '管理员' => [\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-user'], '添加' => [\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'], '修改' => ['hide:'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'], '登录记录' => ['hide:root/login_index', 'fa fa-calendar'], 'help' => [813], ] ), ]); $this->name = dr_lang('管理员'); } public function index() { $p = [ 'rid' => intval($_GET['rid']), 'keyword' => dr_safe_replace($_GET['keyword']), ]; $where = []; if ($p['keyword']) { $where[] = '`username` LIKE "%'.$p['keyword'].'%"'; } if ($this->myrole) { $where[] = $this->mywhere; } if ($p['rid']) { $where[] = '`uid` IN (select uid from `'.\Phpcmf\Service::M()->dbprefix('admin_role_index').'` where roleid='.$p['rid'].')'; } $this->_init([ 'table' => 'admin', 'join_list' => ['member', 'member.id=admin.uid', 'left'], 'order_by' => 'uid desc', 'where_list' => implode(' AND ', $where), ]); list($a, $data) = $this->_List($p); if ($data['list']) { foreach ($data['list'] as $i => $t) { $role = \Phpcmf\Service::M()->db->table('admin_role_index')->where('uid', $t['uid'])->get()->getResultArray(); if ($role) { foreach ($role as $r) { $data['list'][$i]['role'][$r['roleid']] = $this->role[$r['roleid']]['name']; } } } } \Phpcmf\Service::V()->assign('p', $p); \Phpcmf\Service::V()->assign('list', $data['list']); \Phpcmf\Service::V()->display('root_index.html'); } // 登录记录 public function login_index() { $uid = (int)\Phpcmf\Service::L('input')->get('id'); $where = 'uid='.$uid; if ($this->myrole) { $where.= ' and '.$this->mywhere; } $this->_init([ 'table' => 'admin_login', 'order_by' => 'logintime desc', 'where_list' => $where, ]); list($a, $data) = $this->_List(['uid' => $uid]); \Phpcmf\Service::V()->assign([ 'list' => $data['list'], 'user' => dr_member_info($uid), ]); \Phpcmf\Service::V()->display('root_login.html'); } public function ck_index() { $name = dr_safe_replace($_GET['name']); $data = \Phpcmf\Service::M()->db->table('member')->where('username', $name)->get()->getRowArray(); $this->_json($data ? 0 : 1, 'ok'); } public function status_edit() { $uid = intval($_GET['id']); $data = \Phpcmf\Service::M()->db->table('member_data')->where('id', $uid)->get()->getRowArray(); if ($data['is_lock']) { \Phpcmf\Service::M()->db->table('member_data')->where('id', $uid)->update(['is_lock' => 0]); $this->_json(1, dr_lang('解除登录锁定')); } else { if ($this->uid == $uid) { $this->_json(0, dr_lang('无法对自己设置状态')); } elseif (1 == $uid) { $this->_json(0, dr_lang('不能设置超管账号')); } \Phpcmf\Service::M()->db->table('member_data')->where('id', $uid)->update(['is_lock' => 1]); $this->_json(1, dr_lang('登录已锁定,将无法登陆账号')); } } public function add() { if (IS_AJAX_POST) { $post = \Phpcmf\Service::L('input')->post('data'); $name = dr_safe_replace($post['username']); if (!$name) { $this->_json(0, dr_lang('账号不能为空'), ['field' => 'username']); } elseif (!$post['role']) { $this->_json(0, dr_lang('至少要选择一个角色组'), ['field' => 'role']); } if ($this->myrole) { foreach ($post['role'] as $t) { if (!in_array($t, $this->myrole)) { $this->_json(0, dr_lang('存在无权限操作的角色组'), ['field' => 'role']); } } } $data = \Phpcmf\Service::M()->db->table('member')->where('username', $name)->get()->getRowArray(); if (!$data) { // 注册账号 $rt = \Phpcmf\Service::L('form')->check_username($name); if (!$rt['code']) { $this->_json(0, $rt['msg'], ['field' => 'username']); } if (!\Phpcmf\Service::L('Form')->check_email($post['email'])) { $this->_json(0, dr_lang('邮箱格式不正确'), ['field' => 'email']); } elseif (!\Phpcmf\Service::L('Form')->check_phone($post['phone'])) { $this->_json(0, dr_lang('手机号码格式不正确'), ['field' => 'phone']); } elseif (empty($post['password'])) { $this->_json(0, dr_lang('密码必须填写'), ['field' => 'password']); } elseif ($post['name'] && $this->member_cache['config']['unique_name'] && \Phpcmf\Service::M()->db->table('member')->where('name', $post['name'])->countAllResults()) { $this->_json(0, dr_lang('%s已经注册', MEMBER_CNAME), ['field' => 'name']); } $rt = \Phpcmf\Service::L('Form')->check_password($post['password'], $name); if (!$rt['code']) { $this->_json(0, $rt['msg'], ['field' => 'password']); } $rt = \Phpcmf\Service::M('member')->register(0, [ 'username' => $post['username'], 'phone' => $post['phone'], 'email' => $post['email'], 'name' => $post['name'], 'password' => dr_safe_password($post['password']), ]); if (!$rt['code']) { // 注册失败 $this->_json(0, $rt['msg'], ['field' => $rt['data']['field']]); } $data = $rt['data']; } if (\Phpcmf\Service::M()->table('admin')->where('uid', $data['id'])->counts()) { $this->_json(0, dr_lang('此账号已经是管理员')); } $rt = \Phpcmf\Service::M()->table('admin')->insert([ 'uid' => $data['id'], 'setting' => '', 'usermenu' => '', ]); if (!$rt['code']) { $this->_json(0, $rt['msg']); } if (dr_in_array(1, $post['role'])) { // 超管模式 \Phpcmf\Service::M()->table('admin_role_index')->insert([ 'uid' => $data['id'], 'roleid' => 1, ]); } else { foreach ($post['role'] as $t) { \Phpcmf\Service::M()->table('admin_role_index')->insert([ 'uid' => $data['id'], 'roleid' => $t, ]); } } \Phpcmf\Service::M()->table('member_data')->update($data['id'], ['is_admin' => 1]); $this->_json(1, dr_lang('操作成功')); } \Phpcmf\Service::V()->assign([ 'post_url' =>\Phpcmf\Service::L('Router')->url('root/add'), 'reply_url' =>\Phpcmf\Service::L('Router')->url('root/index'), ]); \Phpcmf\Service::V()->display('root_add.html'); } public function edit() { $id = intval(\Phpcmf\Service::L('input')->get('id')); $data = \Phpcmf\Service::M()->db->table('admin')->where('uid', $id)->get()->getRowArray(); if (!$data) { $this->_admin_msg(0, dr_lang('账号不存在')); } $member = \Phpcmf\Service::M()->db->table('member')->where('id', $data['uid'])->get()->getRowArray(); if (!$member) { $this->_admin_msg(0, dr_lang('账号不存在')); } if (IS_AJAX_POST) { $post = \Phpcmf\Service::L('input')->post('data'); if (!$post['role']) { $this->_json(0, dr_lang('至少要选择一个角色组'), ['field' => 'role']); } elseif (!\Phpcmf\Service::L('Form')->check_email($post['email'])) { $this->_json(0, dr_lang('邮箱格式不正确'), ['field' => 'email']); } elseif (!\Phpcmf\Service::L('Form')->check_phone($post['phone'])) { $this->_json(0, dr_lang('手机号码格式不正确'), ['field' => 'phone']); } elseif (\Phpcmf\Service::M()->db->table('member')->where('id<>'. $member['id'])->where('email', $post['email'])->countAllResults()) { $this->_json(0, dr_lang('邮箱%s已经注册', $post['email']), ['field' => 'email']); } elseif (\Phpcmf\Service::M()->db->table('member')->where('id<>'. $member['id'])->where('phone', $post['phone'])->countAllResults()) { $this->_json(0, dr_lang('手机号码%s已经注册', $post['phone']), ['field' => 'phone']); } elseif ($post['name'] && $this->member_cache['config']['unique_name'] && \Phpcmf\Service::M()->db->table('member')->where('id<>'. $member['id'])->where('name', $post['name'])->countAllResults()) { $this->_json(0, dr_lang('%s已经注册', MEMBER_CNAME), ['field' => 'name']); } elseif ($this->myrole) { foreach ($post['role'] as $t) { if (!in_array($t, $this->myrole)) { $this->_json(0, dr_lang('存在无权限操作的角色组'), ['field' => 'role']); } } } if ($post['username'] != $member['username']) { // 改账号时 $rs = \Phpcmf\Service::L('Form')->check_username($post['username']); if (!$rs['code']) { $this->_json(0, $rs['msg'], ['field' => 'username']); } elseif (\Phpcmf\Service::M()->db->table('member')->where('username', $post['username'])->countAllResults()) { $this->_json(0, dr_lang('账号%s已经注册', $post['username']), ['field' => 'username']); } \Phpcmf\Service::M()->table('member')->update($member['id'], [ 'username' => $post['username'], 'phone' => $post['phone'], 'email' => $post['email'], 'name' => $post['name'], ]); \Phpcmf\Service::M('member')->clear_cache($member['id'], $member['username']); } else { \Phpcmf\Service::M()->table('member')->update($member['id'], [ 'phone' => $post['phone'], 'email' => $post['email'], 'name' => $post['name'], ]); } if ($post['password']) { $rt = \Phpcmf\Service::L('Form')->check_password($post['password'], $post['username']); if (!$rt['code']) { $this->_json(0, $rt['msg'], ['field' => 'password']); } \Phpcmf\Service::M('member')->edit_password($member, $post['password']); } if ($id > 1) { \Phpcmf\Service::M()->db->table('admin_role_index')->where('uid', $member['id'])->delete(); foreach ($post['role'] as $t) { \Phpcmf\Service::M()->table('admin_role_index')->replace([ 'uid' => $member['id'], 'roleid' => $t, ]); } } $this->_json(1, dr_lang('操作成功')); } $data = $data + $member; $role = \Phpcmf\Service::M()->db->table('admin_role_index')->where('uid', $data['uid'])->get()->getResultArray(); if ($role) { foreach ($role as $r) { $data['role'][$r['roleid']] = $this->role[$r['roleid']]['name']; } } // 不是超级管理员,排除超管账号 if (!dr_in_array(1, $this->admin['roleid'])) { unset($this->role[1]); if (isset($data['role'][1])) { $this->_admin_msg(0, dr_lang('无权限编辑')); } } \Phpcmf\Service::V()->assign([ 'edit' => 1, 'data' => $data, 'post_url' =>\Phpcmf\Service::L('Router')->url('root/add'), 'reply_url' =>\Phpcmf\Service::L('Router')->url('root/index'), ]); \Phpcmf\Service::V()->display('root_add.html'); } // 后台删除url内容 public function del() { $ids = \Phpcmf\Service::L('input')->get_post_ids(); if (dr_in_array(1, $ids)) { $this->_json(0, dr_lang('创始人账号不能删除')); } elseif (dr_in_array($this->uid, $ids)) { $this->_json(0, dr_lang('不能删除自己')); } // 批量操作 foreach ($ids as $u) { // 不是超级管理员,排除超管账号 if ($this->myrole && !\Phpcmf\Service::M()->table('admin_role_index')->where('uid', $u)->where($this->mywhere)->counts()) { $this->_json(0, dr_lang('存在无权限操作的角色组'), ['field' => 'role']); } \Phpcmf\Service::M()->db->table('admin')->where('uid', $u)->delete(); \Phpcmf\Service::M()->db->table('admin_login')->where('uid', $u)->delete(); \Phpcmf\Service::M()->db->table('admin_role_index')->where('uid', $u)->delete(); \Phpcmf\Service::M()->table('member_data')->update($u, ['is_admin' => 0]); } $this->_json(1, dr_lang('操作成功')); } }