Commit 76477bbb1844bdf390a4c4d2dd4e8f3e77107f9d
1 parent
f743ffd1
feat:【report】增强对报表的安全集成,对应 https://t.zsxq.com/yzlkA 反馈的问题
Showing
1 changed file
with
31 additions
and
3 deletions
yudao-module-report/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.java
| ... | ... | @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.report.framework.jmreport.core.service; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.ObjectUtil; |
| 4 | 4 | import cn.hutool.core.util.StrUtil; |
| 5 | +import cn.iocoder.yudao.framework.common.biz.system.oauth2.OAuth2TokenCommonApi; | |
| 6 | +import cn.iocoder.yudao.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenCheckRespDTO; | |
| 5 | 7 | import cn.iocoder.yudao.framework.common.biz.system.permission.PermissionCommonApi; |
| 6 | 8 | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| 7 | 9 | import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; |
| ... | ... | @@ -10,9 +12,6 @@ import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 10 | 12 | import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; |
| 11 | 13 | import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; |
| 12 | 14 | import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; |
| 13 | -import cn.iocoder.yudao.framework.common.biz.system.oauth2.OAuth2TokenCommonApi; | |
| 14 | -import cn.iocoder.yudao.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenCheckRespDTO; | |
| 15 | -import cn.iocoder.yudao.module.system.api.permission.PermissionApi; | |
| 16 | 15 | import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; |
| 17 | 16 | import jakarta.servlet.http.HttpServletRequest; |
| 18 | 17 | import lombok.RequiredArgsConstructor; |
| ... | ... | @@ -158,4 +157,33 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { |
| 158 | 157 | return StrUtil.toStringOrNull(loginUser.getTenantId()); |
| 159 | 158 | } |
| 160 | 159 | |
| 160 | + @Override | |
| 161 | + public String[] getPermissions(String token) { | |
| 162 | + // 设置租户上下文 | |
| 163 | + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); | |
| 164 | + if (loginUser == null) { | |
| 165 | + return null; | |
| 166 | + } | |
| 167 | + TenantContextHolder.setTenantId(loginUser.getTenantId()); | |
| 168 | + | |
| 169 | + // 参见文档 https://help.jimureport.com/prodSafe/ 文档 | |
| 170 | + // 适配:如果是本系统的管理员,则返回积木报表(仪表盘/大屏设计器)的所有权限指令 | |
| 171 | + // 如果不处理,会碰到 https://t.zsxq.com/yzlkA 反馈的问题 | |
| 172 | + Long userId = SecurityFrameworkUtils.getLoginUserId(); | |
| 173 | + if (permissionApi.hasAnyRoles(userId, RoleCodeEnum.SUPER_ADMIN.getCode())) { | |
| 174 | + return new String[]{ | |
| 175 | + "drag:datasource:testConnection", // 数据库连接测试 | |
| 176 | + "drag:datasource:saveOrUpate", // 数据源保存 | |
| 177 | + "drag:datasource:delete", // 数据源删除 | |
| 178 | + "drag:analysis:sql", // SQL解析 | |
| 179 | + "drag:design:getTotalData", // 展示Online表单数据 | |
| 180 | + "drag:dataset:save", // 数据集保存 | |
| 181 | + "drag:dataset:delete", // 数据集删除 | |
| 182 | + "onl:drag:clear:recovery", // 清空回收站 | |
| 183 | + "onl:drag:page:delete" // 数据删除 | |
| 184 | + }; | |
| 185 | + } | |
| 186 | + return null; | |
| 187 | + } | |
| 188 | + | |
| 161 | 189 | } | ... | ... |