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:"; }