|
|
@@ -1,6 +1,5 @@
|
|
|
package com.jzg.config;
|
|
|
|
|
|
-import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.alipay.api.AlipayApiException;
|
|
|
@@ -133,33 +132,19 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
|
|
|
if(Objects.isNull(weblogUser)){
|
|
|
throw new SystemException("用户名不存在");
|
|
|
}
|
|
|
- // 同一个业务可能存在于多个租户,因此这里可能查询出多个
|
|
|
- List<SysUserJzgInfo> sysUserJzgInfos = sysUserJzgInfoMapper.queryJzgInfoByUserId(weblogUser.getId());
|
|
|
- if(CollectionUtil.isEmpty(sysUserJzgInfos)){
|
|
|
- log.info("登录异常:用户不存在。 userId=[{}]",weblogUser.getId());
|
|
|
- throw new SystemException("业务员不存在");
|
|
|
- }
|
|
|
- SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfos.get(0);
|
|
|
- // 租户系统才会校验这个, 后台管理系统,没有租户的概念
|
|
|
- if(this.isTenantLogin(system)){
|
|
|
- if (sysUserJzgInfo.cannotLogin()) {
|
|
|
- log.info("用户被禁用/离职,不能登录。sysUserJzgInfo=[{}]", JSONUtil.toJsonStr(sysUserJzgInfo));
|
|
|
- throw new SystemException("用户已被禁用/离职,无法登录");
|
|
|
- }
|
|
|
- }
|
|
|
+ // 校验用户的有效性
|
|
|
+ this.validateUser(weblogUser.getId(), system);
|
|
|
salt = weblogUser.getSalt();
|
|
|
}
|
|
|
- if(this.isTenantLogin(system)){
|
|
|
- // modify by lipf, 用户所属租户如果被禁用,不能登录
|
|
|
- HttpResult<List<SysTennatVo>> tenants = organizationClient.getTenantList(username);
|
|
|
- log.info("用户[{}]有[{}]个租户,分别是tenants=[{}]",username, CollUtil.size(tenants.getData()), JSONUtil.toJsonStr(tenants));
|
|
|
- if(CollectionUtil.isEmpty(tenants.getData())){
|
|
|
- log.info("用户[{}]所属的租户已经被禁用,无法登录",username);
|
|
|
- throw new SystemException("用户所属的租户已经被禁用,无法登录");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+// if(this.isTenantLogin(system)){
|
|
|
+// // modify by lipf, 用户所属租户如果被禁用,不能登录
|
|
|
+// HttpResult<List<SysTennatVo>> tenants = organizationClient.getTenantList(username);
|
|
|
+// log.info("用户[{}]有[{}]个租户,分别是tenants=[{}]",username, CollUtil.size(tenants.getData()), JSONUtil.toJsonStr(tenants));
|
|
|
+// if(CollectionUtil.isEmpty(tenants.getData())){
|
|
|
+// log.info("用户[{}]所属的租户已经被禁用,无法登录",username);
|
|
|
+// throw new SystemException("用户所属的租户已经被禁用,无法登录");
|
|
|
+// }
|
|
|
+// }
|
|
|
//检验短信验证码
|
|
|
if(Objects.nonNull(code)){
|
|
|
String systemSmsCode = redissonClient.getBucket(RedisKeyConstants.SMS_CODE + username).get().toString();
|
|
|
@@ -378,6 +363,40 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
|
|
|
}};
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 校验用户的有效性(不同的登录平台对应不同的表)
|
|
|
+ *
|
|
|
+ * @param userId sus_user表的序号
|
|
|
+ * @author lipf
|
|
|
+ * @date 2026/5/7 15:46
|
|
|
+ */
|
|
|
+ private void validateUser(String userId, String system) {
|
|
|
+ if("APP".equals(system)) {
|
|
|
+ // 手机APP登录
|
|
|
+
|
|
|
+ }else if("PLATFORM".equals(system)) {
|
|
|
+ // 平台登录
|
|
|
+
|
|
|
+
|
|
|
+ }else{
|
|
|
+ //租户登录
|
|
|
+ // 同一个业务可能存在于多个租户,因此这里可能查询出多个
|
|
|
+ List<SysUserJzgInfo> sysUserJzgInfos = sysUserJzgInfoMapper.queryJzgInfoByUserId(userId);
|
|
|
+ if(CollectionUtil.isEmpty(sysUserJzgInfos)){
|
|
|
+ log.info("租户登录异常:用户不存在。 userId=[{}]",userId);
|
|
|
+ throw new SystemException("业务员不存在");
|
|
|
+ }
|
|
|
+ SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfos.get(0);
|
|
|
+ // 租户系统才会校验这个, 后台管理系统,没有租户的概念
|
|
|
+ if(this.isTenantLogin(system)){
|
|
|
+ if (sysUserJzgInfo.cannotLogin()) {
|
|
|
+ log.info("用户被禁用/离职,不能登录。sysUserJzgInfo=[{}]", JSONUtil.toJsonStr(sysUserJzgInfo));
|
|
|
+ throw new SystemException("用户已被禁用/离职,无法登录");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 判断是否是租户登录
|
|
|
*
|