From 76477bbb1844bdf390a4c4d2dd4e8f3e77107f9d Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 18 Jan 2026 16:01:38 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90report=E3=80=91=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=E5=AF=B9=E6=8A=A5=E8=A1=A8=E7=9A=84=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E9=9B=86=E6=88=90=EF=BC=8C=E5=AF=B9=E5=BA=94=20https://t.zsxq.?= =?UTF-8?q?com/yzlkA=20=E5=8F=8D=E9=A6=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/JmReportTokenServiceImpl.java | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/yudao-module-report/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.java b/yudao-module-report/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.java index e5f63967d8..50673b57f5 100644 --- a/yudao-module-report/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.java +++ b/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; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.biz.system.oauth2.OAuth2TokenCommonApi; +import cn.iocoder.yudao.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenCheckRespDTO; import cn.iocoder.yudao.framework.common.biz.system.permission.PermissionCommonApi; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; @@ -10,9 +12,6 @@ import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; -import cn.iocoder.yudao.framework.common.biz.system.oauth2.OAuth2TokenCommonApi; -import cn.iocoder.yudao.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenCheckRespDTO; -import cn.iocoder.yudao.module.system.api.permission.PermissionApi; import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; @@ -158,4 +157,33 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { return StrUtil.toStringOrNull(loginUser.getTenantId()); } + @Override + public String[] getPermissions(String token) { + // 设置租户上下文 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + if (loginUser == null) { + return null; + } + TenantContextHolder.setTenantId(loginUser.getTenantId()); + + // 参见文档 https://help.jimureport.com/prodSafe/ 文档 + // 适配:如果是本系统的管理员,则返回积木报表(仪表盘/大屏设计器)的所有权限指令 + // 如果不处理,会碰到 https://t.zsxq.com/yzlkA 反馈的问题 + Long userId = SecurityFrameworkUtils.getLoginUserId(); + if (permissionApi.hasAnyRoles(userId, RoleCodeEnum.SUPER_ADMIN.getCode())) { + return new String[]{ + "drag:datasource:testConnection", // 数据库连接测试 + "drag:datasource:saveOrUpate", // 数据源保存 + "drag:datasource:delete", // 数据源删除 + "drag:analysis:sql", // SQL解析 + "drag:design:getTotalData", // 展示Online表单数据 + "drag:dataset:save", // 数据集保存 + "drag:dataset:delete", // 数据集删除 + "onl:drag:clear:recovery", // 清空回收站 + "onl:drag:page:delete" // 数据删除 + }; + } + return null; + } + }