mybatis拦截器实现权限管理( 四 )

getOperatorList(Integer permissionId) {LoginUser loginUser = SecurityUtils.getLoginUser();List userIds = new ArrayList<>(16);if (loginUser != null) {// 查询本人的当前页面的操作权限for (PermissionV2Vo permissionV2Vo : loginUser.getPermissionV2VoList()) {if (permissionV2Vo.getId().equals(permissionId)) {switch (permissionV2Vo.getDataAuthority()) {// 本人case 1:userIds.add(loginUser.getUserId());break;// 本部门case 2:// 获取部门的人员Example example = new Example(UserV2.class);example.createCriteria().andEqualTo("departmentId", loginUser.getUser().getDepartmentId());userIds = SpringUtil.getBeanByType(UserV2Mapper.class).selectByExample(example).stream().map(BaseEntity::getId).collect(Collectors.toList());break;// 公司case 3:default:break;}}}}return userIds;}}
上面代码为根据认证用户所拥有的资源进行数据的封装传递给拦截器的过程 。主要思路为根据用户所属的权限组获取到用户当前页面拥有的数据权限:公司、部门、个人 , 若所属权限为公司即可查查看所有资源 , 无需处理 。若为部门则将部门下的所有用户传递给拦截器过滤 , 若为个人同理 。
/*** 获取应用名称列表* @return*/public List getAllAppNameList(){DataPermissionHelper.startOnlyGamePermission("game_code");return appConfigMapper.getAllAppNameList();}
此为示例代码 , 可以看到在.();上增加了一行开启游戏权限过滤的代码 , 通过此代码将原本查所有的游戏变成了只查当前用户拥有的游戏 。