From f05467d6689131a45563f52820d60a233c65c498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Thu, 9 Mar 2023 12:03:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=20sonar=E3=80=91JwtUtil=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/common/system/util/JwtUtil.java | 154 +++++++++++------- 1 file changed, 96 insertions(+), 58 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/util/JwtUtil.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/util/JwtUtil.java index 4f1413e2..a4dfdb74 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/util/JwtUtil.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/util/JwtUtil.java @@ -144,7 +144,7 @@ public class JwtUtil { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String moshi = ""; - if(key.indexOf("}")!=-1){ + if(key.contains("}")){ moshi = key.substring(key.indexOf("}")+1); } String returnValue = null; @@ -152,65 +152,103 @@ public class JwtUtil { if (key.contains("#{")) { key = key.substring(2,key.indexOf("}")); } - //替换为系统登录用户帐号 - if (key.equals(DataBaseConstant.SYS_USER_CODE)|| key.toLowerCase().equals(DataBaseConstant.SYS_USER_CODE_TABLE)) { - if(user==null) { - returnValue = sysUser.getUsername(); - }else { - returnValue = user.getSysUserCode(); - } - } - //替换为系统登录用户真实名字 - else if (key.equals(DataBaseConstant.SYS_USER_NAME)|| key.toLowerCase().equals(DataBaseConstant.SYS_USER_NAME_TABLE)) { - if(user==null) { - returnValue = sysUser.getRealname(); - }else { - returnValue = user.getSysUserName(); - } - } - - //替换为系统用户登录所使用的机构编码 - else if (key.equals(DataBaseConstant.SYS_ORG_CODE)|| key.toLowerCase().equals(DataBaseConstant.SYS_ORG_CODE_TABLE)) { - if(user==null) { - returnValue = sysUser.getOrgCode(); - }else { - returnValue = user.getSysOrgCode(); - } - } - //替换为系统用户所拥有的所有机构编码 - else if (key.equals(DataBaseConstant.SYS_MULTI_ORG_CODE)|| key.toLowerCase().equals(DataBaseConstant.SYS_MULTI_ORG_CODE_TABLE)) { - if(user==null){ - //TODO 暂时使用用户登录部门,存在逻辑缺陷,不是用户所拥有的部门 - returnValue = sysUser.getOrgCode(); - }else{ - if(user.isOneDepart()) { - returnValue = user.getSysMultiOrgCode().get(0); - }else { - returnValue = Joiner.on(",").join(user.getSysMultiOrgCode()); - } - } - } - //替换为当前系统时间(年月日) - else if (key.equals(DataBaseConstant.SYS_DATE)|| key.toLowerCase().equals(DataBaseConstant.SYS_DATE_TABLE)) { - returnValue = DateUtils.formatDate(); - } - //替换为当前系统时间(年月日时分秒) - else if (key.equals(DataBaseConstant.SYS_TIME)|| key.toLowerCase().equals(DataBaseConstant.SYS_TIME_TABLE)) { - returnValue = DateUtils.now(); - } - //流程状态默认值(默认未发起) - else if (key.equals(DataBaseConstant.BPM_STATUS)|| key.toLowerCase().equals(DataBaseConstant.BPM_STATUS_TABLE)) { - returnValue = "1"; - } - //update-begin-author:taoyan date:20210330 for:多租户ID作为系统变量 - else if (key.equals(DataBaseConstant.TENANT_ID) || key.toLowerCase().equals(DataBaseConstant.TENANT_ID_TABLE)){ - returnValue = sysUser.getRelTenantIds(); - if(oConvertUtils.isEmpty(returnValue) || (returnValue!=null && returnValue.contains(","))){ - returnValue = SpringContextUtils.getHttpServletRequest().getHeader(CommonConstant.TENANT_ID); - } - } + returnValue = setReturnValue(key, user, sysUser, returnValue); //update-end-author:taoyan date:20210330 for:多租户ID作为系统变量 if(returnValue!=null){returnValue = returnValue + moshi;} return returnValue; } + + private static String setReturnValue(String key, SysUserCacheInfo user, LoginUser sysUser, String returnValue) { + //替换为系统登录用户帐号 + if (isaBoolean(key, DataBaseConstant.SYS_USER_CODE, DataBaseConstant.SYS_USER_CODE_TABLE)) { + returnValue = setReturnValueUsername(user, sysUser); + } + //替换为系统登录用户真实名字 + else if (isaBoolean(key, DataBaseConstant.SYS_USER_NAME, DataBaseConstant.SYS_USER_NAME_TABLE)) { + returnValue = setReturnValueRealName(user, sysUser); + } + + //替换为系统用户登录所使用的机构编码 + else if (isaBoolean(key, DataBaseConstant.SYS_ORG_CODE, DataBaseConstant.SYS_ORG_CODE_TABLE)) { + returnValue = setReturnValueOrgCode(user, sysUser); + } + //替换为系统用户所拥有的所有机构编码 + else if (isaBoolean(key, DataBaseConstant.SYS_MULTI_ORG_CODE, DataBaseConstant.SYS_MULTI_ORG_CODE_TABLE)) { + returnValue = setReturnValueOrgCodeNew(user, sysUser); + } + //替换为当前系统时间(年月日) + else if (isaBoolean(key, DataBaseConstant.SYS_DATE, DataBaseConstant.SYS_DATE_TABLE)) { + returnValue = DateUtils.formatDate(); + } + //替换为当前系统时间(年月日时分秒) + else if (isaBoolean(key, DataBaseConstant.SYS_TIME, DataBaseConstant.SYS_TIME_TABLE)) { + returnValue = DateUtils.now(); + } + //流程状态默认值(默认未发起) + else if (isaBoolean(key, DataBaseConstant.BPM_STATUS, DataBaseConstant.BPM_STATUS_TABLE)) { + returnValue = "1"; + } + //update-begin-author:taoyan date:20210330 for:多租户ID作为系统变量 + else if (isaBoolean(key, DataBaseConstant.TENANT_ID, DataBaseConstant.TENANT_ID_TABLE)){ + returnValue = sysUser.getRelTenantIds(); + returnValue = setReturnValueTenantId(returnValue); + } + return returnValue; + } + + private static boolean isaBoolean(String key, String sysUserCode, String sysUserCodeTable) { + return key.equals(sysUserCode) || key.equalsIgnoreCase(sysUserCodeTable); + } + + private static String setReturnValueTenantId(String returnValue) { + if(oConvertUtils.isEmpty(returnValue) || returnValue.contains(",")){ + returnValue = SpringContextUtils.getHttpServletRequest().getHeader(CommonConstant.TENANT_ID); + } + return returnValue; + } + + private static String setReturnValueOrgCodeNew(SysUserCacheInfo user, LoginUser sysUser) { + String returnValue; + if(user==null){ + //TODO 暂时使用用户登录部门,存在逻辑缺陷,不是用户所拥有的部门 + returnValue = sysUser.getOrgCode(); + }else{ + if(user.isOneDepart()) { + returnValue = user.getSysMultiOrgCode().get(0); + }else { + returnValue = Joiner.on(",").join(user.getSysMultiOrgCode()); + } + } + return returnValue; + } + + private static String setReturnValueOrgCode(SysUserCacheInfo user, LoginUser sysUser) { + String returnValue; + if(user==null) { + returnValue = sysUser.getOrgCode(); + }else { + returnValue = user.getSysOrgCode(); + } + return returnValue; + } + + private static String setReturnValueRealName(SysUserCacheInfo user, LoginUser sysUser) { + String returnValue; + if(user==null) { + returnValue = sysUser.getRealname(); + }else { + returnValue = user.getSysUserName(); + } + return returnValue; + } + + private static String setReturnValueUsername(SysUserCacheInfo user, LoginUser sysUser) { + String returnValue; + if(user==null) { + returnValue = sysUser.getUsername(); + }else { + returnValue = user.getSysUserCode(); + } + return returnValue; + } }