123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_app_class('admin','admin',0);
- pc_base::load_app_func('admin');
- class admin_manage extends admin {
- private $db,$role_db;
- function __construct() {
- parent::__construct();
- $this->db = pc_base::load_model('admin_model');
- $this->role_db = pc_base::load_model('admin_role_model');
- $this->op = pc_base::load_app_class('admin_op');
- }
-
- /**
- * 管理员管理列表
- */
- public function init() {
- $userid = $_SESSION['userid'];
- $admin_username = param::get_cookie('admin_username');
- $page = $_GET['page'] ? intval($_GET['page']) : '1';
- $infos = $this->db->listinfo('', '', $page, 20);
- $pages = $this->db->pages;
- $roles = getcache('role','commons');
- include $this->admin_tpl('admin_list');
- }
-
- /**
- * 添加管理员
- */
- public function add() {
- if(isset($_POST['dosubmit'])) {
- if($this->check_admin_manage_code()==false){
- showmessage("error auth code");
- }
- $info = array();
- if(!$this->op->checkname($_POST['info']['username'])){
- showmessage(L('admin_already_exists'));
- }
- $info = checkuserinfo($_POST['info']);
- if(!checkpasswd($info['password'])){
- showmessage(L('pwd_incorrect'));
- }
- $passwordinfo = password($info['password']);
- $info['password'] = $passwordinfo['password'];
- $info['encrypt'] = $passwordinfo['encrypt'];
-
- $admin_fields = array('username', 'email', 'password', 'encrypt','roleid','realname');
- foreach ($info as $k=>$value) {
- if (!in_array($k, $admin_fields)){
- unset($info[$k]);
- }
- }
- $this->db->insert($info);
- if($this->db->insert_id()){
- showmessage(L('operation_success'),'?m=admin&c=admin_manage');
- }
- } else {
- $roles = $this->role_db->select(array('disabled'=>'0'));
- $admin_manage_code = $this->get_admin_manage_code();
- include $this->admin_tpl('admin_add');
- }
-
- }
-
- /**
- * 修改管理员
- */
- public function edit() {
- if(isset($_POST['dosubmit'])) {
- if($this->check_admin_manage_code()==false){
- showmessage("error auth code");
- }
- $memberinfo = $info = array();
- $info = checkuserinfo($_POST['info']);
- if(isset($info['password']) && !empty($info['password']))
- {
- $this->op->edit_password($info['userid'], $info['password']);
- }
- $userid = $info['userid'];
- $admin_fields = array('username', 'email', 'roleid','realname');
- foreach ($info as $k=>$value) {
- if (!in_array($k, $admin_fields)){
- unset($info[$k]);
- }
- }
- $this->db->update($info,array('userid'=>$userid));
- showmessage(L('operation_success'),'','','edit');
- } else {
- $info = $this->db->get_one(array('userid'=>$_GET['userid']));
- extract($info);
- $roles = $this->role_db->select(array('disabled'=>'0'));
- $show_header = true;
- $admin_manage_code = $this->get_admin_manage_code();
- include $this->admin_tpl('admin_edit');
- }
- }
-
- /**
- * 删除管理员
- */
- public function delete() {
- $userid = intval($_GET['userid']);
- if($userid == '1') showmessage(L('this_object_not_del'), HTTP_REFERER);
- $this->db->delete(array('userid'=>$userid));
- showmessage(L('admin_cancel_succ'));
- }
-
- /**
- * 更新管理员状态
- */
- public function lock(){
- $userid = intval($_GET['userid']);
- $disabled = intval($_GET['disabled']);
- $this->db->update(array('disabled'=>$disabled),array('userid'=>$userid));
- showmessage(L('operation_success'),'?m=admin&c=admin_manage');
- }
-
- /**
- * 管理员自助修改密码
- */
- public function public_edit_pwd() {
- $userid = $_SESSION['userid'];
- if(isset($_POST['dosubmit'])) {
- $r = $this->db->get_one(array('userid'=>$userid),'password,encrypt');
- if ( password($_POST['old_password'],$r['encrypt']) !== $r['password'] ) showmessage(L('old_password_wrong'),HTTP_REFERER);
- if(isset($_POST['new_password']) && !empty($_POST['new_password'])) {
- $this->op->edit_password($userid, $_POST['new_password']);
- }
- showmessage(L('password_edit_succ_logout'),'?m=admin&c=index&a=public_logout');
- } else {
- $info = $this->db->get_one(array('userid'=>$userid));
- extract($info);
- include $this->admin_tpl('admin_edit_pwd');
- }
- }
- /*
- * 编辑用户信息
- */
- public function public_edit_info() {
- $userid = $_SESSION['userid'];
- if(isset($_POST['dosubmit'])) {
- $admin_fields = array('email','realname','lang');
- $info = array();
- $info = $_POST['info'];
- if(trim($info['lang'])=='') $info['lang'] = 'zh-cn';
- foreach ($info as $k=>$value) {
- if (!in_array($k, $admin_fields)){
- unset($info[$k]);
- }
- }
- $this->db->update($info,array('userid'=>$userid));
- param::set_cookie('sys_lang', $info['lang'],SYS_TIME+86400*30);
- showmessage(L('operation_success'),HTTP_REFERER);
- } else {
- $info = $this->db->get_one(array('userid'=>$userid));
- extract($info);
-
- $lang_dirs = glob(PC_PATH.'languages/*');
- $dir_array = array();
- foreach($lang_dirs as $dirs) {
- $dir_array[] = str_replace(PC_PATH.'languages/','',$dirs);
- }
- include $this->admin_tpl('admin_edit_info');
- }
-
- }
- /**
- * 异步检测用户名
- */
- function public_checkname_ajx() {
- $username = isset($_GET['username']) && trim($_GET['username']) ? trim($_GET['username']) : exit(0);
- if ($this->db->get_one(array('username'=>$username),'userid')){
- exit('0');
- }
- exit('1');
- }
- /**
- * 异步检测密码
- */
- function public_password_ajx() {
- $userid = $_SESSION['userid'];
- $r = array();
- $r = $this->db->get_one(array('userid'=>$userid),'password,encrypt');
- if ( password($_GET['old_password'],$r['encrypt']) == $r['password'] ) {
- exit('1');
- }
- exit('0');
- }
- /**
- * 异步检测emial合法性
- */
- function public_email_ajx() {
- $email = $_GET['email'];
- $userid = $_SESSION['userid'];
- $check = $this->db->get_one(array('email'=>$email),'userid');
- if ($check && $check['userid']!=$userid){
- exit('0');
- }else{
- exit('1');
- }
- }
- //电子口令卡
- function card() {
- if (pc_base::load_config('system', 'safe_card') != 1) {
- showmessage(L('your_website_opened_the_card_no_password'));
- }
- $userid = isset($_GET['userid']) && intval($_GET['userid']) ? intval($_GET['userid']) : showmessage(L('user_id_cannot_be_empty'));
- $data = array();
- if ($data = $this->db->get_one(array('userid'=>$userid), '`card`,`username`')) {
- $pic_url = '';
- if ($data['card']) {
- pc_base::load_app_class('card', 'admin', 0);
- $pic_url = card::get_pic($data['card']);
- }
- $show_header = true;
- include $this->admin_tpl('admin_card');
- } else {
- showmessage(L('users_were_not_found'));
- }
- }
-
- //绑定电子口令卡
- function creat_card() {
- if (pc_base::load_config('system', 'safe_card') != 1) {
- showmessage(L('your_website_opened_the_card_no_password'));
- }
- $userid = isset($_GET['userid']) && intval($_GET['userid']) ? intval($_GET['userid']) : showmessage(L('user_id_cannot_be_empty'));
- $data = $card = '';
- if ($data = $this->db->get_one(array('userid'=>$userid), '`card`,`username`')) {
- if (empty($data['card'])) {
- pc_base::load_app_class('card', 'admin', 0);
- $card = card::creat_card();
- if ($this->db->update(array('card'=>$card), array('userid'=>$userid))) {
- showmessage(L('password_card_application_success'), '?m=admin&c=admin_manage&a=card&userid='.$userid);
- } else {
- showmessage(L('a_card_with_a_local_database_please_contact_the_system_administrators'));
- }
- } else {
- showmessage(L('please_lift_the_password_card_binding'),HTTP_REFERER);
- }
- } else {
- showmessage(L('users_were_not_found'));
- }
- }
-
- //解除口令卡绑定
- function remove_card() {
- if (pc_base::load_config('system', 'safe_card') != 1) {
- showmessage(L('your_website_opened_the_card_no_password'));
- }
- $userid = isset($_GET['userid']) && intval($_GET['userid']) ? intval($_GET['userid']) : showmessage(L('user_id_cannot_be_empty'));
- $data = $result = '';
- if ($data = $this->db->get_one(array('userid'=>$userid), '`card`,`username`,`userid`')) {
- pc_base::load_app_class('card', 'admin', 0);
- if ($result = card::remove_card($data['card'])) {
- $this->db->update(array('card'=>''), array('userid'=>$userid));
- showmessage(L('the_binding_success'), '?m=admin&c=admin_manage&a=card&userid='.$userid);
- }
- } else {
- showmessage(L('users_were_not_found'));
- }
- }
- //添加修改用户 验证串验证
- private function check_admin_manage_code(){
- $admin_manage_code = $_POST['info']['admin_manage_code'];
- $pc_auth_key = md5(pc_base::load_config('system','auth_key').'adminuser');
- $admin_manage_code = sys_auth($admin_manage_code, 'DECODE', $pc_auth_key);
- if($admin_manage_code==""){
- return false;
- }
- $admin_manage_code = explode("_", $admin_manage_code);
- if($admin_manage_code[0]!="adminuser" || $admin_manage_code[1]!=$_POST[pc_hash]){
- return false;
- }
- return true;
- }
- //添加修改用户 生成验证串
- private function get_admin_manage_code(){
- $pc_auth_key = md5(pc_base::load_config('system','auth_key').'adminuser');
- $code = sys_auth("adminuser_".$_GET[pc_hash]."_".time(), 'ENCODE', $pc_auth_key);
- return $code;
- }
- }
- ?>
|