From 6ade7e22f8297b0ab444e288585900188680b7ca Mon Sep 17 00:00:00 2001 From: JEECG <445654970@qq.com> Date: Sat, 22 Jun 2024 20:06:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E6=9C=A8=E6=8A=A5=E8=A1=A8=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=AE=9E=E7=8E=B0=E7=B1=BB=E6=94=BE=E5=BC=80=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jimureport/JimuReportTokenService.java | 162 +++++++++--------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java index 0b5871c86..81950d66c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java @@ -1,81 +1,81 @@ -//package org.jeecg.config.jimureport; -// -//import lombok.extern.slf4j.Slf4j; -//import org.jeecg.common.system.util.JwtUtil; -//import org.jeecg.common.system.vo.SysUserCacheInfo; -//import org.jeecg.common.util.RedisUtil; -//import org.jeecg.common.util.TokenUtils; -//import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; -//import org.jeecg.modules.system.service.impl.SysBaseApiImpl; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.context.annotation.Lazy; -//import org.springframework.stereotype.Component; -//import org.springframework.util.CollectionUtils; -// -//import jakarta.servlet.http.HttpServletRequest; -//import java.util.HashMap; -//import java.util.Map; -//import java.util.Set; -// -///** -// * 自定义积木报表鉴权(如果不进行自定义,则所有请求不做权限控制) -// * * 1.自定义获取登录token -// * * 2.自定义获取登录用户 -// * @author: jeecg-boot -// */ -// -// -//@Slf4j -//@Component -//public class JimuReportTokenService implements JmReportTokenServiceI { -// @Autowired -// private SysBaseApiImpl sysBaseApi; -// @Autowired -// @Lazy -// private RedisUtil redisUtil; -// -// @Override -// public String getToken(HttpServletRequest request) { -// return TokenUtils.getTokenByRequest(request); -// } -// -// @Override -// public String getUsername(String token) { -// return JwtUtil.getUsername(token); -// } -// -// @Override -// public String[] getRoles(String token) { -// String username = JwtUtil.getUsername(token); -// Set roles = sysBaseApi.getUserRoleSet(username); -// if(CollectionUtils.isEmpty(roles)){ -// return null; -// } -// return (String[]) roles.toArray(new String[roles.size()]); -// } -// -// @Override -// public Boolean verifyToken(String token) { -// return TokenUtils.verifyToken(token, sysBaseApi, redisUtil); -// } -// -// @Override -// public Map getUserInfo(String token) { -// Map map = new HashMap(5); -// String username = JwtUtil.getUsername(token); -// //此处通过token只能拿到一个信息 用户账号 后面的就是根据账号获取其他信息 查询数据或是走redis 用户根据自身业务可自定义 -// SysUserCacheInfo userInfo = null; -// try { -// userInfo = sysBaseApi.getCacheUser(username); -// } catch (Exception e) { -// log.error("获取用户信息异常:"+ e.getMessage()); -// return map; -// } -// //设置账号名 -// map.put(SYS_USER_CODE, userInfo.getSysUserCode()); -// //设置部门编码 -// map.put(SYS_ORG_CODE, userInfo.getSysOrgCode()); -// // 将所有信息存放至map 解析sql/api会根据map的键值解析 -// return map; -// } -//} +package org.jeecg.config.jimureport; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.system.vo.SysUserCacheInfo; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.common.util.TokenUtils; +import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import jakarta.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * 自定义积木报表鉴权(如果不进行自定义,则所有请求不做权限控制) + * * 1.自定义获取登录token + * * 2.自定义获取登录用户 + * @author: jeecg-boot + */ + + +@Slf4j +@Component +public class JimuReportTokenService implements JmReportTokenServiceI { + @Autowired + private SysBaseApiImpl sysBaseApi; + @Autowired + @Lazy + private RedisUtil redisUtil; + + @Override + public String getToken(HttpServletRequest request) { + return TokenUtils.getTokenByRequest(request); + } + + @Override + public String getUsername(String token) { + return JwtUtil.getUsername(token); + } + + @Override + public String[] getRoles(String token) { + String username = JwtUtil.getUsername(token); + Set roles = sysBaseApi.getUserRoleSet(username); + if(CollectionUtils.isEmpty(roles)){ + return null; + } + return (String[]) roles.toArray(new String[roles.size()]); + } + + @Override + public Boolean verifyToken(String token) { + return TokenUtils.verifyToken(token, sysBaseApi, redisUtil); + } + + @Override + public Map getUserInfo(String token) { + Map map = new HashMap(5); + String username = JwtUtil.getUsername(token); + //此处通过token只能拿到一个信息 用户账号 后面的就是根据账号获取其他信息 查询数据或是走redis 用户根据自身业务可自定义 + SysUserCacheInfo userInfo = null; + try { + userInfo = sysBaseApi.getCacheUser(username); + } catch (Exception e) { + log.error("获取用户信息异常:"+ e.getMessage()); + return map; + } + //设置账号名 + map.put(SYS_USER_CODE, userInfo.getSysUserCode()); + //设置部门编码 + map.put(SYS_ORG_CODE, userInfo.getSysOrgCode()); + // 将所有信息存放至map 解析sql/api会根据map的键值解析 + return map; + } +}