Commit 022238758cc1860e32846f00c88f4e88143f6e06
1 parent
ee3e507f
【完善】适配 jimu 报表的安全配置
Showing
2 changed files
with
15 additions
and
7 deletions
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,6 +3,7 @@ package cn.iocoder.yudao.module.report.framework.jmreport.config; | ||
| 3 | import cn.iocoder.yudao.framework.security.config.SecurityProperties; | 3 | import cn.iocoder.yudao.framework.security.config.SecurityProperties; |
| 4 | import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; | 4 | import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; |
| 5 | import cn.iocoder.yudao.module.report.framework.jmreport.core.service.JmReportTokenServiceImpl; | 5 | import cn.iocoder.yudao.module.report.framework.jmreport.core.service.JmReportTokenServiceImpl; |
| 6 | +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; | ||
| 6 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; | 7 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; |
| 7 | import org.springframework.context.annotation.Bean; | 8 | import org.springframework.context.annotation.Bean; |
| 8 | import org.springframework.context.annotation.ComponentScan; | 9 | import org.springframework.context.annotation.ComponentScan; |
| @@ -19,8 +20,10 @@ public class JmReportConfiguration { | @@ -19,8 +20,10 @@ public class JmReportConfiguration { | ||
| 19 | 20 | ||
| 20 | @Bean | 21 | @Bean |
| 21 | @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") | 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,12 +11,13 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; | ||
| 11 | import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; | 11 | import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; |
| 12 | import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; | 12 | import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; |
| 13 | import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO; | 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 | import lombok.RequiredArgsConstructor; | 17 | import lombok.RequiredArgsConstructor; |
| 16 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; | 18 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; |
| 17 | import org.springframework.http.HttpHeaders; | 19 | import org.springframework.http.HttpHeaders; |
| 18 | 20 | ||
| 19 | -import jakarta.servlet.http.HttpServletRequest; | ||
| 20 | import java.util.Objects; | 21 | import java.util.Objects; |
| 21 | 22 | ||
| 22 | /** | 23 | /** |
| @@ -37,6 +38,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | @@ -37,6 +38,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | ||
| 37 | private static final String AUTHORIZATION_FORMAT = SecurityFrameworkUtils.AUTHORIZATION_BEARER + " %s"; | 38 | private static final String AUTHORIZATION_FORMAT = SecurityFrameworkUtils.AUTHORIZATION_BEARER + " %s"; |
| 38 | 39 | ||
| 39 | private final OAuth2TokenApi oauth2TokenApi; | 40 | private final OAuth2TokenApi oauth2TokenApi; |
| 41 | + private final PermissionApi permissionApi; | ||
| 40 | 42 | ||
| 41 | private final SecurityProperties securityProperties; | 43 | private final SecurityProperties securityProperties; |
| 42 | 44 | ||
| @@ -130,9 +132,12 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | @@ -130,9 +132,12 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | ||
| 130 | } | 132 | } |
| 131 | 133 | ||
| 132 | @Override | 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 | @Override | 143 | @Override |