171 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
/*
 | 
						|
* @link http://kodcloud.com/
 | 
						|
* @author warlee | e-mail:kodcloud@qq.com
 | 
						|
* @copyright warlee 2014.(Shanghai)Co.,Ltd
 | 
						|
* @license http://kodcloud.com/tools/license/license.txt
 | 
						|
*/
 | 
						|
 | 
						|
class systemRole extends Controller{
 | 
						|
	public static $staticSql = null;
 | 
						|
	private $sql;
 | 
						|
	function __construct(){
 | 
						|
		parent::__construct();
 | 
						|
		$this->sql= self::loadData();
 | 
						|
	}
 | 
						|
 | 
						|
	//保证只加载一次文件
 | 
						|
	public static function loadData(){
 | 
						|
		if(is_null(self::$staticSql)){
 | 
						|
			self::$staticSql = systemRoleData();
 | 
						|
		}
 | 
						|
		return self::$staticSql;
 | 
						|
	}
 | 
						|
	public static function getInfo($theId){
 | 
						|
		$sql = self::loadData();
 | 
						|
		return $sql->get($theId);
 | 
						|
	}
 | 
						|
	
 | 
						|
 | 
						|
	//获取所有权限组
 | 
						|
	//用户组权限
 | 
						|
	public function get() {
 | 
						|
		if(isset($this->in['group_role'])){
 | 
						|
			$this->in['action'] == 'get';
 | 
						|
			$this->roleGroupAction();
 | 
						|
		}
 | 
						|
		show_json($this->sql->get());
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 权限添加
 | 
						|
	 */
 | 
						|
	public function add(){
 | 
						|
		$role = $this->_initData();
 | 
						|
		$roleId = $role['roleID'] = $this->sql->getMaxId().'';
 | 
						|
		$this->_checkExist( $this->sql->get(),array('name',$role['name']),$roleId );
 | 
						|
		if ($this->sql->set($role['roleID'],$role)) {
 | 
						|
			show_json(LNG('success'),true,$role['roleID']);
 | 
						|
		}
 | 
						|
		show_json(LNG('error'),false);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 编辑
 | 
						|
	 */
 | 
						|
	public function edit(){
 | 
						|
		$role = $this->_initData();
 | 
						|
		$roleId = $this->in['roleID'];
 | 
						|
		$this->_checkExist( $this->sql->get(),array('name',$role['name']),$roleId );
 | 
						|
		if ($this->sql->set($roleId,$role)){
 | 
						|
			show_json(LNG('success'),true,$roleId);
 | 
						|
		}
 | 
						|
		show_json(LNG('error'),false);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 删除
 | 
						|
	 */
 | 
						|
	public function del() {
 | 
						|
		if (!isset($this->in['roleID'])) show_json(LNG('data_not_full'),false);
 | 
						|
		if (strlen($this->in['roleID']) <= 1) show_json(LNG('default_user_can_not_do'),false);
 | 
						|
		systemMember::roleRemoveUserUpdate($this->in['roleID']);//用户所在权限组变更
 | 
						|
		if($this->sql->remove($this->in['roleID'])){
 | 
						|
			show_json(LNG('success'));
 | 
						|
		}
 | 
						|
		show_json(LNG('error'),false);
 | 
						|
	}
 | 
						|
	
 | 
						|
	/**
 | 
						|
	 * 用户组权限列表配置
 | 
						|
	 * 增删改查
 | 
						|
	 */
 | 
						|
	public function roleGroupAction(){
 | 
						|
		$sql = new FileCache(USER_SYSTEM.'system_role_group.php');
 | 
						|
		switch ($this->in['action']) {
 | 
						|
			case 'get':
 | 
						|
				$roleGroup = $sql->get();
 | 
						|
				if($roleGroup['1']['name'] == 'read'){
 | 
						|
					$roleGroup['1']['name'] = LNG('system_role_read');
 | 
						|
				}
 | 
						|
				if($roleGroup['2']['name'] == 'write'){
 | 
						|
					$roleGroup['2']['name'] = LNG('system_role_write');
 | 
						|
				}
 | 
						|
				show_json($roleGroup,true,$this->config['pathRoleDefine']);
 | 
						|
				break;
 | 
						|
			case 'add':
 | 
						|
				$roleId = $sql->getMaxId().'';
 | 
						|
				$roleArr = json_decode($this->in['role_arr'],true);
 | 
						|
				if(!is_array($roleArr)) show_json(LNG('error'),false);
 | 
						|
				if(!trim($roleArr['name'])) show_json(LNG("data_not_full"),false);
 | 
						|
				$this->_checkExist( $sql->get(),array('name',$roleArr['name']),$roleId);
 | 
						|
				if ($sql->set($roleId,$roleArr)) {
 | 
						|
					show_json(array($roleId),true,$sql->get());
 | 
						|
				}
 | 
						|
				show_json(LNG('error'),false);
 | 
						|
				break;
 | 
						|
			case 'set':
 | 
						|
				$roleId = $this->in['roleID'];
 | 
						|
				$roleArr = json_decode($this->in['role_arr'],true);
 | 
						|
				if(!is_array($roleArr)) show_json(LNG('error'),false);
 | 
						|
				if(!trim($roleArr['name'])) show_json(LNG("data_not_full"),false);
 | 
						|
				$this->_checkExist( $sql->get(),array('name',$roleArr['name']),$roleId);
 | 
						|
				if ($sql->set($roleId,$roleArr)){
 | 
						|
					show_json(LNG('success'),true,$sql->get());
 | 
						|
				}
 | 
						|
				show_json(LNG('error'),false);
 | 
						|
				break;
 | 
						|
			case 'del':
 | 
						|
				$roleId = $this->in['roleID'];
 | 
						|
				if(in_array($roleId,array("1","2"))){
 | 
						|
					show_json(LNG('default_user_can_not_do'),false);
 | 
						|
				}
 | 
						|
				if($sql->remove($this->in['roleID'])){
 | 
						|
					show_json(LNG('success'),true,$sql->get());
 | 
						|
				}
 | 
						|
				show_json(LNG('error'),false);
 | 
						|
				break;
 | 
						|
			default:break;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	//检测是否存在
 | 
						|
	private function _checkExist($data,$find,$checkID){
 | 
						|
		$findData = array();
 | 
						|
		foreach ($data as $key => $val) {
 | 
						|
			if ($val[$find[0]] == $find[1]) {
 | 
						|
				$findData[$key] = $data[$key];
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if(is_array($findData) && count($findData)>0  ){
 | 
						|
			$key = array_keys($findData);$key=$key[0];
 | 
						|
			if($key != $checkID) show_json(LNG("error_repeat"),false);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	//===========内部调用============
 | 
						|
	/**
 | 
						|
	 * 初始化数据 get   
 | 
						|
	 * 只传键即可  &extNotAllow='php,jsp'&explorer.mkfile=1&explorer.pathRname=1
 | 
						|
	 */
 | 
						|
	private function _initData(){
 | 
						|
		if (strlen($this->in['name'])<1) show_json(LNG('groupname_can_not_null'),false);
 | 
						|
		$roleArr = array(
 | 
						|
			'name'			=> rawurldecode($this->in['name']),
 | 
						|
			'extNotAllow'	=> $this->in['extNotAllow']
 | 
						|
		);
 | 
						|
		foreach ($this->config['roleSetting'] as $key => $actions) {
 | 
						|
			foreach ($actions as $action) {
 | 
						|
				$keyUrl  = $key.'_'.$action;//url explorer.mkdir => explorer_mkdir;
 | 
						|
				$keyAuth = $key.'.'.$action;
 | 
						|
				if (isset($this->in[$keyUrl])){
 | 
						|
					$roleArr[$keyAuth] = 1;
 | 
						|
				}else{
 | 
						|
					$roleArr[$keyAuth] = 0;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		return $roleArr;
 | 
						|
	}
 | 
						|
}
 |