fix bug
This commit is contained in:
parent
7fd6432158
commit
c500891702
|
|
@ -54,6 +54,11 @@ public class SysUserController {
|
|||
return userService.accountLogin(accountLoginDto);
|
||||
}
|
||||
|
||||
@PostMapping(value = "loginNoCode")
|
||||
public Response<UserInfoVO> loginNoCode(@RequestBody AccountLoginDTO accountLoginDto) {
|
||||
return userService.loginNoCode(accountLoginDto);
|
||||
}
|
||||
|
||||
@PostMapping(value = "mobileLogin")
|
||||
public Response<UserInfoVO> mobileLogin(@RequestBody MobileLoginDTO mobileLoginDto) {
|
||||
return userService.mobileLogin(mobileLoginDto);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ spring:
|
|||
redis:
|
||||
host: 58.49.150.163
|
||||
port: 6379
|
||||
username: default
|
||||
password: Clunt@12345
|
||||
jedis:
|
||||
pool:
|
||||
|
|
@ -20,4 +21,4 @@ spring:
|
|||
max-wait: 100
|
||||
max-idle: 20
|
||||
min-idle: 5
|
||||
timeout: 10000
|
||||
timeout: 10000
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public class JWTConfig implements WebMvcConfigurer {
|
|||
.excludePathPatterns("/v2/common/captcha")
|
||||
.excludePathPatterns("/user/register")
|
||||
.excludePathPatterns("/user/login")
|
||||
.excludePathPatterns("/user/loginNoCode")
|
||||
.excludePathPatterns("/user/mobileLogin")
|
||||
.excludePathPatterns("/user/updatePassword")
|
||||
.excludePathPatterns("/user/updatePasswordByEmail")
|
||||
|
|
|
|||
|
|
@ -303,7 +303,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
|
|||
.count();
|
||||
|
||||
var tenant = tenantMapper.selectById(sysUserService.getCurrentTenantId());
|
||||
if (tenant.getUserNumLimit() != 0 && userNum >= tenant.getUserNumLimit()) {
|
||||
if (tenant != null && tenant.getUserNumLimit() != 0 && userNum >= tenant.getUserNumLimit()) {
|
||||
var systemLanguage = sysUserService.getUserSystemLanguage(sysUserService.getCurrentUserId());
|
||||
if ("zh_CN".equals(systemLanguage)) {
|
||||
return Response.responseMsg(TenantCodeEnum.TENANT_USER_NUM_LIMIT);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ public interface ISysUserService extends IService<SysUser> {
|
|||
|
||||
Response<UserInfoVO> accountLogin(AccountLoginDTO accountLoginDto);
|
||||
|
||||
Response<UserInfoVO> loginNoCode(AccountLoginDTO accountLoginDto);
|
||||
|
||||
Response<UserInfoVO> mobileLogin(MobileLoginDTO mobileLoginDto);
|
||||
|
||||
Response<UserInfoVO> emailLogin(EmailLoginDTO emailLoginDTO);
|
||||
|
|
|
|||
|
|
@ -285,7 +285,61 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
}
|
||||
// Check user tenant expiration skip admin
|
||||
var tenant = tenantMapper.selectById(user.getTenantId());
|
||||
if (!"admin".equals(accountLoginDto.getUsername()) && tenant.getExpireTime().isBefore(LocalDateTime.now())) {
|
||||
if (!"admin".equals(accountLoginDto.getUsername()) && tenant != null && tenant.getExpireTime().isBefore(LocalDateTime.now())) {
|
||||
return Response.responseMsg(TenantCodeEnum.TENANT_EXPIRED);
|
||||
}
|
||||
|
||||
var token = "";
|
||||
if (redisUtil.hasKey(user.getUserName() + ":token")) {
|
||||
token = String.valueOf(redisUtil.get(user.getUserName() + ":token"));
|
||||
} else {
|
||||
// 生成JWT的令牌
|
||||
token = jwtUtil.createToken(accountLoginDto.getUsername());
|
||||
redisUtil.set(accountLoginDto.getUsername() + ":token", token);
|
||||
redisUtil.expire(accountLoginDto.getUsername() + ":token", 86400);
|
||||
// 同时存放userId和userName 租户id
|
||||
redisUtil.set(token + ":userName", user.getUserName(), 86400);
|
||||
redisUtil.set(token + ":userId", String.valueOf(user.getId()), 86400);
|
||||
redisUtil.set(token + ":tenantId", String.valueOf(user.getTenantId()), 86400);
|
||||
}
|
||||
|
||||
return Response.responseData(UserInfoVO.builder()
|
||||
.id(user.getId())
|
||||
.token(token)
|
||||
.expire(1694757956L)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response<UserInfoVO> loginNoCode(AccountLoginDTO accountLoginDto){
|
||||
|
||||
var password = "";
|
||||
try {
|
||||
password = CryptoUtils.decryptSymmetrically(SecurityConstants.LOGIN_SECURITY_KEY, null,
|
||||
accountLoginDto.getPassword(), CryptoUtils.Algorithm.Encryption.AES_ECB_PKCS5);
|
||||
} catch (Exception e) {
|
||||
log.error("密码解密失败: " + e.getMessage());
|
||||
return Response.responseMsg(UserCodeEnum.USERNAME_OR_PASSWORD_ERROR);
|
||||
}
|
||||
var user = lambdaQuery()
|
||||
.eq(SysUser::getUserName, accountLoginDto.getUsername())
|
||||
.eq(SysUser::getPassword, CommonTools.md5Encryp(password))
|
||||
.one();
|
||||
|
||||
if (user == null) {
|
||||
return Response.responseMsg(UserCodeEnum.USERNAME_OR_PASSWORD_ERROR);
|
||||
}
|
||||
|
||||
if (user.getStatus() == UserConstants.USER_STATUS_DISABLE) {
|
||||
return Response.responseMsg(UserCodeEnum.USER_ACCOUNT_FREEZE);
|
||||
}
|
||||
|
||||
if (user.getDeleteFlag() == CommonConstants.DELETED) {
|
||||
return Response.responseMsg(UserCodeEnum.USER_ACCOUNT_INVALID);
|
||||
}
|
||||
// Check user tenant expiration skip admin
|
||||
var tenant = tenantMapper.selectById(user.getTenantId());
|
||||
if (!"admin".equals(accountLoginDto.getUsername()) && tenant != null && tenant.getExpireTime().isBefore(LocalDateTime.now())) {
|
||||
return Response.responseMsg(TenantCodeEnum.TENANT_EXPIRED);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue