/** * 返回内容区域的菜单 */ protected function getContentMenu() { $this->list = SC::getUserPermissionSession(); foreach ($this->list as $key => $value) { if ($value['display'] == self::DISABLE_NONE) { unset($this->list[$key]); } } $this->menuTree = (array) Tree::genTree($this->list); $son = \App\Services\Admin\Tree::getSonKey(); $mcaName = \App\Services\Admin\MCAManager::MAC_BIND_NAME; $MCA = app()->make($mcaName); foreach ($this->menuTree as $key => $value) { if (isset($value[$son]) and is_array($value[$son])) { foreach ($value[$son] as $skey => $svalue) { if (!$MCA->matchSecondMenu($svalue['module'], $svalue['class'], $svalue['action'])) { continue; } if (isset($svalue[$son]) and is_array($svalue[$son])) { return $svalue[$son]; } } } } return []; }
/** * 取回登录所保存的权限信息并生成树形结构 */ protected function generalData() { $this->list = SC::getUserPermissionSession(); foreach ($this->list as $key => $value) { if ($value['display'] == self::DISABLE_NONE) { unset($this->list[$key]); } } $this->menuTree = (array) Tree::genTree($this->list); return $this; }
/** * return user permission */ private function getUserPermission() { if (!$this->userPermission) { $this->userPermission = SC::getUserPermissionSession(); } return $this->userPermission; }
/** * 判断当前操作是不是有权限 * * @param string $module 模块 * @param string $class 类 * @param string $function 函数 * @return boolean 是|否 */ public function checkIfHasPermission($module, $class, $function) { $module = (string) $module; $class = (string) $class; $function = (string) $function; //判断是不是超级用户 if ($this->isSystemManager()) { return true; } //默认为配置文件中指定的后台模块 if (!$module) { $module = ''; } //是否不需要验证的操作 if ($this->isNoNeedCheckPermission($module, $class, $function)) { return true; } //取回保存在session中的权限信息 $permissionList = SC::getUserPermissionSession(); //验证用户权限 foreach ($permissionList as $value) { if ($this->matchAction($value, $module, $class, $function)) { return true; } } return false; }
/** * 对用户组进行权限设置 * * @access public */ public function group() { if (Request::method() == 'POST') { return $this->saveGroupPermissionToDatabase(); } $id = url_param_decode(Request::input('id')); if (!$id or !is_numeric($id)) { return Js::error(Lang::get('common.illegal_operation'), true); } $info = (new GroupModel())->getOneGroupById(intval($id)); if (empty($info)) { return Js::error(Lang::get('common.illegal_operation'), true); } if (!(new Acl())->checkGroupLevelPermission($id, Acl::GROUP_LEVEL_TYPE_GROUP)) { return Js::error(Lang::get('common.account_level_deny'), true); } //取回用户组所拥有的权限列表 $list = (array) SC::getUserPermissionSession(); //当前所要编辑的用户组的权限,用于标识是否已经勾选 $groupAcl = (new AccessModel())->getGroupAccessPermission(intval($id)); $hasPermissions = array(); foreach ($groupAcl as $key => $value) { $hasPermissions[] = $value['permission_id']; } //为ztree做数据准备 $zTree = []; $all = []; foreach ($list as $key => $value) { $arr = ['id' => $value['id'], 'pId' => $value['pid'], 'name' => $value['name'], 'open' => true]; if (in_array($value['id'], $hasPermissions)) { $arr['checked'] = true; } $zTree[] = $arr; $all[] = $value['id']; } $router = 'group'; return view('admin.acl.setpermission', compact('zTree', 'id', 'info', 'router', 'all')); }
/** * 为权限赋予页面准备ztree插件需要的数据 * * @return array */ public function prepareUserPermissionIds() { $list = SC::getUserPermissionSession(); $all = []; foreach ($list as $key => $value) { $all[] = $value['id']; } return $all; }