| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 | <?phpnamespace Admin\Controller;/** * 管理员 * @author   Devil * @blog     http://gong.gg/ * @version  0.0.1 * @datetime 2016-12-01T21:51:08+0800 */class AdminController extends CommonController{	/**	 * [_initialize 前置操作-继承公共前置方法]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-03T12:39:08+0800	 */	public function _initialize()	{		// 调用父类前置方法		parent::_initialize();	}	/**     * [Index 管理员列表]     * @author   Devil     * @blog     http://gong.gg/     * @version  0.0.1     * @datetime 2016-12-06T21:31:53+0800     */	public function Index()	{		// 登录校验		$this->Is_Login();				// 权限校验		$this->Is_Power();		// 参数		$param = array_merge($_POST, $_GET);		// 模型对象		$m = M('Admin');		// 条件		$where = $this->GetIndexWhere();		// 分页		$number = MyC('admin_page_number');		$page_param = array(				'number'	=>	$number,				'total'		=>	$m->where($where)->count(),				'where'		=>	$param,				'url'		=>	U('Admin/Admin/Index'),			);		$page = new \My\Page($page_param);		// 获取管理员列表		$list = $m->field(array('id', 'username', 'mobile', 'gender', 'login_total', 'login_time', 'add_time'))->where($where)->limit($page->GetPageStarNumber(), $number)->select();				$role = M('Role')->field(array('id', 'name'))->where(array('is_enable'=>1))->select();		$this->assign('role', $role);		$this->assign('param', $param);		$this->assign('page_html', $page->GetPageHtml());		$this->assign('list', $list);		$this->display('Index');	}	/**	 * [GetIndexWhere 管理员列表条件]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-10T22:16:29+0800	 */	private function GetIndexWhere()	{		$where = array();		if(!empty($_REQUEST['username']))		{			$where['username'] = array('like', '%'.I('username').'%');		}		$role_id = empty($_REQUEST['role_id']) ? 0 : intval(I('role_id'));		if($role_id > 0)		{			$where['role_id'] = $role_id;		}		return $where;	}	/**     * [SaveInfo 管理员添加/编辑页面]     * @author   Devil     * @blog     http://gong.gg/     * @version  0.0.1     * @datetime 2016-12-06T21:31:53+0800     */	public function SaveInfo()	{		// 登录校验		$this->Is_Login();		// 不是操作自己的情况下		if(I('id') != $this->admin['id'])		{			// 权限校验			$this->Is_Power();		}		// 用户编辑		$id = I('id');		if($id > 0)		{			$user =  M('Admin')->where(array('id'=>$id))->field(array('id', 'username', 'mobile', 'gender', 'role_id'))->find();			if(empty($user))			{				$this->error(L('login_username_no_exist'), U('Admin/Index/Index'));			}			$this->assign('data', $user);		}		$role = M('Role')->field(array('id', 'name'))->where(array('is_enable'=>1, 'id'=>array('gt', 1)))->select();		$this->assign('role', $role);		$this->assign('id', $id);		$this->assign('common_gender_list', L('common_gender_list'));		$this->display('SaveInfo');	}	/**     * [Save 管理员添加/编辑]     * @author   Devil     * @blog     http://gong.gg/     * @version  0.0.1     * @datetime 2016-12-07T21:58:19+0800     */	public function Save()	{		// 登录校验		$this->Is_Login();		if(!IS_AJAX)		{			$this->error(L('common_unauthorized_access'));		}		// 不是操作自己的情况下		if(I('id') != $this->admin['id'])		{			// 权限校验			$this->Is_Power();		}		// id为空则表示是新增		if(empty($_POST['id']))		{			$this->AdminAdd();		} else {			$this->AdminEdit();		}	}	/**	 * [AdminAdd 管理员添加]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-24T22:44:28+0800	 */	private function AdminAdd()	{		$m = D('Admin');		if($m->create($_POST, 1))		{			// 额外数据处理			$m->login_salt	=	GetNumberCode(6);			$m->login_pwd 	=	LoginPwdEncryption($m->login_pwd, $m->login_salt);			$m->add_time	=	time();						// 写入数据库			if($m->add())			{				$this->ajaxReturn(L('common_operation_add_success'));			} else {				$this->ajaxReturn(L('common_operation_add_error'), -100);			}		} else {			$this->ajaxReturn($m->getError(), -1);		}	}	/**	 * [AdminEdit 管理员编辑]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-24T22:46:03+0800	 */	private function AdminEdit()	{		$m = D('Admin');		if($m->create($_POST, 2))		{			// 不能修改自身所属角色组			if(I('id') == $this->admin['id'])			{				unset($m->role_id);			}			// 有密码,则更新密码			if(!empty($_POST['login_pwd']))			{				$m->login_salt	=	GetNumberCode(6);				$m->login_pwd 	=	LoginPwdEncryption($m->login_pwd, $m->login_salt);			} else {				unset($m->login_pwd);			}			// 移除username,不允许更新用户名			unset($m->username);			// 更新数据库			if($m->where(array('id'=>I('id')))->save())			{				// 编辑自身则退出重新登录				if(!empty($_POST['login_pwd']) && I('id') == $this->admin['id'])				{					session_destroy();				}				$this->ajaxReturn(L('common_operation_edit_success'));			} else {				$this->ajaxReturn(L('common_operation_edit_error'), -100);			}		} else {			$this->ajaxReturn($m->getError(), -1);		}	}	/**	 * [Delete 管理员删除]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-09T21:13:47+0800	 */	public function Delete()	{		// 登录校验		$this->Is_Login();		// 权限校验		$this->Is_Power();		if(!IS_AJAX)		{			$this->error(L('common_unauthorized_access'));		}		$m = D('Admin');		if($m->create($_POST, 5))		{			if($m->delete($id))			{				$this->ajaxReturn(L('common_operation_delete_success'));			} else {				$this->ajaxReturn(L('common_operation_delete_error'), -100);			}		} else {			$this->ajaxReturn($m->getError(), -1);		}	}	/**	 * [LoginInfo 登录页面]     * @author   Devil     * @blog     http://gong.gg/     * @version  0.0.1     * @datetime 2016-12-03T12:55:53+0800     */	public function LoginInfo()	{		// 是否已登录		if(!empty($_SESSION['admin']))		{			redirect(U('Admin/Index/Index'));		}		$this->display('LoginInfo');	}	/**	 * [Login 管理员登录]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-03T21:46:49+0800	 */	public function Login()	{		// 是否ajax请求		if(!IS_AJAX)		{			$this->error(L('common_unauthorized_access'));		}		// 登录业务处理		$m = D('Admin');		if($m->create($_POST, 4))		{			// 获取管理员			$user = $m->field(array('id', 'username', 'login_pwd', 'login_salt', 'mobile', 'login_total', 'role_id'))->where(array('username'=>I('username')))->find();			if(empty($user))			{				$this->ajaxReturn(L('login_username_no_exist'), -2);			}			// 密码校验			$login_pwd = LoginPwdEncryption(I('login_pwd'), $user['login_salt']);			if($login_pwd != $user['login_pwd'])			{				$this->ajaxReturn(L('login_login_pwd_error'), -3);			}			// 校验成功			// session存储			unset($user['login_pwd'], $user['login_salt']);			$_SESSION['admin'] = $user;			// 返回数据,更新数据库			if(!empty($_SESSION['admin']))			{				$login_salt = GetNumberCode(6);				$data = array(						'login_salt'	=>	$login_salt,						'login_pwd'		=>	LoginPwdEncryption(I('login_pwd'), $login_salt),						'login_total'	=>	$user['login_total']+1,						'login_time'	=>	time(),					);				if($m->where(array('id'=>$user['id']))->save($data))				{					// 清空缓存目录下的数据					EmptyDir(C('DATA_CACHE_PATH'));					$this->ajaxReturn(L('login_login_success'));				}			}			// 失败			unset($_SESSION['admin']);			$this->ajaxReturn(L('login_login_error'), -100);		} else {			// 自动验证失败			$this->ajaxReturn($m->getError(), -1);		}	}	/**	 * [Logout 退出]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2016-12-05T14:31:23+0800	 */	public function Logout()	{		session_destroy();		redirect(U('Admin/Admin/LoginInfo'));	}}?>
 |