Commit 022238758cc1860e32846f00c88f4e88143f6e06

Authored by YunaiV
1 parent ee3e507f

【完善】适配 jimu 报表的安全配置

yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/config/JmReportConfiguration.java
... ... @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.report.framework.jmreport.config;
3 3 import cn.iocoder.yudao.framework.security.config.SecurityProperties;
4 4 import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi;
5 5 import cn.iocoder.yudao.module.report.framework.jmreport.core.service.JmReportTokenServiceImpl;
  6 +import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
6 7 import org.jeecg.modules.jmreport.api.JmReportTokenServiceI;
7 8 import org.springframework.context.annotation.Bean;
8 9 import org.springframework.context.annotation.ComponentScan;
... ... @@ -19,8 +20,10 @@ public class JmReportConfiguration {
19 20  
20 21 @Bean
21 22 @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
22   - public JmReportTokenServiceI jmReportTokenService(OAuth2TokenApi oAuth2TokenApi, SecurityProperties securityProperties) {
23   - return new JmReportTokenServiceImpl(oAuth2TokenApi, securityProperties);
  23 + public JmReportTokenServiceI jmReportTokenService(OAuth2TokenApi oAuth2TokenApi,
  24 + PermissionApi permissionApi,
  25 + SecurityProperties securityProperties) {
  26 + return new JmReportTokenServiceImpl(oAuth2TokenApi, permissionApi, securityProperties);
24 27 }
25 28  
26 29 }
... ...
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.java
... ... @@ -11,12 +11,13 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
11 11 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
12 12 import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi;
13 13 import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
14   -import cn.iocoder.yudao.module.system.api.permission.RoleApi;
  14 +import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
  15 +import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
  16 +import jakarta.servlet.http.HttpServletRequest;
15 17 import lombok.RequiredArgsConstructor;
16 18 import org.jeecg.modules.jmreport.api.JmReportTokenServiceI;
17 19 import org.springframework.http.HttpHeaders;
18 20  
19   -import jakarta.servlet.http.HttpServletRequest;
20 21 import java.util.Objects;
21 22  
22 23 /**
... ... @@ -37,6 +38,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI {
37 38 private static final String AUTHORIZATION_FORMAT = SecurityFrameworkUtils.AUTHORIZATION_BEARER + " %s";
38 39  
39 40 private final OAuth2TokenApi oauth2TokenApi;
  41 + private final PermissionApi permissionApi;
40 42  
41 43 private final SecurityProperties securityProperties;
42 44  
... ... @@ -130,9 +132,12 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI {
130 132 }
131 133  
132 134 @Override
133   - public String[] getRoles(String s) {
134   - // 暂时不用实现,因为不用 JmReport 的角色
135   - return null;
  135 + public String[] getRoles(String token) {
  136 + // 参见文档 https://help.jeecg.com/jimureport/prodSafe.html 文档
  137 + // 适配:如果是本系统的管理员,则转换成 jimu 报表的管理员
  138 + Long userId = SecurityFrameworkUtils.getLoginUserId();
  139 + return permissionApi.hasAnyRoles(userId, RoleCodeEnum.SUPER_ADMIN.getCode())
  140 + ? new String[]{"admin"} : null;
136 141 }
137 142  
138 143 @Override
... ...