From 30fcfc5eadf0a1374ea945129e6336da3cde80f1 Mon Sep 17 00:00:00 2001
From: "pref_mail@163.com" <123456>
Date: Mon, 4 Sep 2023 14:43:23 +0800
Subject: [PATCH] =?UTF-8?q?1.=E6=8F=90=E4=BA=A4=E7=99=BB=E5=BD=95=E8=8E=B7?=
=?UTF-8?q?=E5=8F=96=E4=BB=93=E5=BA=93=E4=BF=A1=E6=81=AF=E7=9A=84=E9=97=AE?=
=?UTF-8?q?=E9=A2=98=20=E5=BE=85=E8=A7=A3=E5=86=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
blade-auth/pom.xml | 7 ++++++
.../service/BladeUserDetailsServiceImpl.java | 25 +++++++++++++++++--
.../springblade/common/cache/CacheNames.java | 18 +++++++++++++
3 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/blade-auth/pom.xml b/blade-auth/pom.xml
index 549d1f45..c85b55b8 100644
--- a/blade-auth/pom.xml
+++ b/blade-auth/pom.xml
@@ -115,6 +115,13 @@
activation
1.1.1
-->
+
+
+
+
+
+
+
diff --git a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
index 94b68ee7..d9910305 100644
--- a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
+++ b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
@@ -16,10 +16,12 @@
*/
package org.springblade.auth.service;
+import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import io.jsonwebtoken.Claims;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
import org.springblade.auth.constant.AuthConstant;
import org.springblade.auth.utils.TokenUtil;
import org.springblade.common.cache.CacheNames;
@@ -53,6 +55,7 @@ import java.util.List;
*/
@Service
@AllArgsConstructor
+@Slf4j
public class BladeUserDetailsServiceImpl implements UserDetailsService {
public static final Integer FAIL_COUNT = 5;
@@ -149,16 +152,34 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
user.setRoleId(headerRole);
}
// 判断账号的停用时间
- if(Func.isNotEmpty(user.getDownTime()) && user.getDownTime().getTime() < new Date().getTime()){
+ if (Func.isNotEmpty(user.getDownTime()) && user.getDownTime().getTime() < new Date().getTime()) {
throw new UserDeniedAuthorizationException(TokenUtil.ACCOUNT_DISABLE);
}
+ // 绑定仓库
+ String key = CacheNames.tenantKeyObj(tenantId, CacheNames.USER_WAREHOUSE_KEY, user.getId());
+ try{
+ Object json = bladeRedis.getRedisTemplate().opsForValue().get(key);
+ if(ObjectUtil.isNotEmpty(json)){
+ JSONObject jsonObject = JSONObject.parseObject(json.toString());
+ if(ObjectUtil.isNotEmpty(jsonObject)){
+ userInfo.getDetail().put("warehouse_id",jsonObject.get("id"));
+ userInfo.getDetail().put("warehouse_name",jsonObject.get("name"));
+ }
+ }
+ }catch (Exception e){
+ log.error("登录获取仓库信息报错 {}",e.getMessage());
+ }
+
// 成功则清除登录错误次数
delFailCount(tenantId, username);
- return new BladeUserDetails(user.getId(),
+
+ BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(),
user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),
username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true,
AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())));
+
+ return bladeUserDetails;
} else {
throw new UsernameNotFoundException(result.getMsg());
}
diff --git a/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java b/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java
index 90355cd0..42f732c9 100644
--- a/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java
+++ b/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java
@@ -45,6 +45,19 @@ public interface CacheNames {
static String tenantKey(String tenantId, String cacheKey, String cacheKeyValue) {
return tenantId.concat(":").concat(cacheKey).concat(cacheKeyValue);
}
+ /**
+ * 返回租户格式的key
+ *
+ * @param tenantId 租户编号
+ * @param cacheKey 缓存key
+ * @param cacheKeyValue 缓存key值
+ * @return tenantKey
+ */
+ static String tenantKeyObj(String tenantId, String cacheKey, Object cacheKeyValue) {
+ return tenantId.concat(":").concat(cacheKey).concat(cacheKeyValue.toString());
+ }
+
+
/**
* 验证码key
@@ -56,4 +69,9 @@ public interface CacheNames {
*/
String USER_FAIL_KEY = "blade:user::blade:fail:";
+
+ /**
+ * 用户选择仓库的key
+ */
+ String USER_WAREHOUSE_KEY = "logpm:user:warehouse:select:";
}