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 | 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 | ... | ... |