/** * 是否有权限 */ public static function checkRight($thisRoute = null) { // 用户资源 $userData = CSession::get('user'); if ($userData['groupId'] == 1) { return true; } $userRightList = isset($userData['rightAll']) ? $userData['rightAll'] : array(); // 附加公共资源 array_push($userRightList, 'system@welcome'); array_push($userRightList, 'system@navList'); array_push($userRightList, 'system@addNav'); array_push($userRightList, 'system@addNavHandle'); array_push($userRightList, 'system@ajaxAddNav'); array_push($userRightList, 'system@editNav'); array_push($userRightList, 'system@editNavHandle'); array_push($userRightList, 'system@delNav'); array_push($userRightList, 'system@changeMyPassword'); array_push($userRightList, 'system@changeMyPassHandle'); array_push($userRightList, 'adminRole@messageCenterForClient'); array_push($userRightList, 'system@seeHelp'); // 转小写 foreach ($userRightList as $key => $val) { $userRightList[$key] = strtolower($val); } // 获取当前请求的路由 if ($thisRoute == null) { $route = CRequest::getController() . '@' . str_replace(CConfig::getInstance()->load('ACTION_PREFIX'), '', CRequest::getAction()); } else { $route = $thisRoute; } return in_array(strtolower($route), $userRightList); }
public function display($templateName = '', $isCache = false, $num = '') { if (empty($templateName)) { $templateName = CRequest::getController() . '/' . str_replace(CConfig::getInstance()->load('ACTION_PREFIX'), '', CRequest::getAction()); } parent::display($templateName, $isCache, $num); }
/** * 设置基础数据 */ public static function setInitData($viewObject) { $prefix = CConfig::getInstance()->load('ACTION_PREFIX'); $viewObject->assign('thisUrl', urlencode(CRequest::getUrl())); $viewObject->assign('base64Url', CEncrypt::safe_b64encode(CRequest::getUrl())); $viewObject->assign('controller', CRequest::getController()); $viewObject->assign('action', CRequest::getAction()); $viewObject->assign('actionPre', $prefix); $viewObject->assign('ip', CRequest::getIp()); $viewObject->assign('module', CRequest::getModule()); $viewObject->assign('time', time()); $viewObject->assign('sessionID', session_id()); $viewObject->assign('path', CRequest::getPath()); $viewObject->assign('staticUrl', CConfig::getInstance('site')->load('staticUrl')); $viewObject->assign('uploadStaticUrl', CConfig::getInstance('site')->load('uploadStaticUrl')); $viewObject->assign('siteName', CConfig::getInstance('site')->load('siteName')); }
/** * 编辑角色权限 */ public function Action_editRole() { $id = $this->Args('id', 'int'); if ($_POST) { // 变动参数 $addData['rightList'] = implode(',', (array) $this->Args('rights', 'array', 'post', true)); // 产品 渠道 $addData['parent_id'] = $this->Args('parent_id', 'int'); if ($addData['parent_id'] == 0) { // 判断是否是超级管理员 $userData = CSession::get('user'); if ($userData['groupData']['gid'] != 1) { $this->displayAjax(false, '您不是超级管理员账户,您无法创建顶级角色分组'); } } $status = CModel::factory('adminRoleModel')->update($addData, array('gid' => $id)); if (false == $status) { $errorMessage = CDatabase::getDatabase()->errorInfo(); $errorMessage = isset($errorMessage[2]) ? $errorMessage[2] : ''; } $this->assignAjax('redirect_url', $this->createUrl('index', CRequest::getController())); $this->displayAjax(true, '更新成功'); } $list = CModel::factory('adminRoleModel')->getCategoryTreeList(); // 过滤起可控的管理角色 $list = CModel::factory('adminRoleModel')->filterUserRole($list); $rightData = CModel::factory('adminRightsModel')->getAllRights(); // var_dump($rightData); $rightArray = array(); $rightUndefined = array(); foreach ($rightData as $key => $item) { preg_match('/\\[.*?\\]/', $item['name'], $localPre); if (isset($localPre[0])) { $arrayKey = trim($localPre[0], '[]'); $rightArray[$arrayKey][] = $item; } else { $rightUndefined[] = $item; } } // 获取该角色信息 $data = CModel::factory('adminRoleModel')->getUserRole($id); if ($data) { $data['rightList'] = explode(',', $data['rightList']); } // 按照权限过滤资源表 $rightArray = CModel::factory('adminRightsModel')->filterRight($rightArray); $this->assign('list', $list); $this->assign('id', $id); $this->assign('data', $data); $this->assign('rightArray', $rightArray); // []中匹配正确的权限资源 $this->assign('rightUndefined', $rightUndefined); // 未被定义的权限资源 $this->display(); }