增加登录用户状态验证

This commit is contained in:
wanggeng 2022-04-07 10:53:41 +08:00
parent f4afb708a7
commit 5d528dc23c
2 changed files with 27 additions and 21 deletions

View File

@ -11,8 +11,10 @@ import ink.wgink.login.app.pojo.vos.appsign.AppLoginVO;
import ink.wgink.login.app.service.appdeviceuser.IAppDeviceUserService;
import ink.wgink.login.app.service.appsign.IAppSignService;
import ink.wgink.login.app.service.appversion.IAppVersionService;
import ink.wgink.login.base.exceptions.UserAuthenticationException;
import ink.wgink.login.base.service.BaseAppSignService;
import ink.wgink.pojo.bos.LoginAppUser;
import ink.wgink.service.user.enums.UserStateEnum;
import ink.wgink.service.user.pojo.pos.UserPO;
import ink.wgink.service.user.service.IUserService;
import ink.wgink.util.date.DateUtil;
@ -60,6 +62,18 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe
if (userPO == null) {
throw new SearchException("用户不存在");
}
if (userPO.getUserState() == UserStateEnum.UN_EXAMINE.getValue()) {
throw new SearchException("用户未审核");
}
if (userPO.getUserState() == UserStateEnum.UN_PASS.getValue()) {
throw new SearchException("用户审核未通过");
}
if (userPO.getUserState() == UserStateEnum.LOCK.getValue()) {
throw new SearchException("用户已锁定");
}
if(DateUtil.isDateExpired(userPO.getUserExpiredDate())) {
throw new UserAuthenticationException("账号已经过期");
}
if (!passwordEncoder.matches(userPassword, userPO.getUserPassword())) {
throw new SearchException("用户名或密码错误");
}
@ -140,4 +154,5 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe
UserPO userPO = userService.getPO(userId);
return getToken(userPO);
}
}

View File

@ -1,13 +1,16 @@
package ink.wgink.login.base.service.user;
import com.alibaba.fastjson.JSONObject;
import ink.wgink.exceptions.SearchException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.interfaces.user.IUserDetailCheckService;
import ink.wgink.login.base.exceptions.UserAuthenticationException;
import ink.wgink.login.base.manager.ConfigManager;
import ink.wgink.pojo.bos.LoginUser;
import ink.wgink.service.user.enums.UserStateEnum;
import ink.wgink.service.user.pojo.pos.UserPO;
import ink.wgink.service.user.service.IUserService;
import ink.wgink.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
@ -50,10 +53,16 @@ public class UserDetailServiceImpl implements UserDetailsService, IUserDetailChe
if (null == userPO) {
throw new UserAuthenticationException("账号不存在");
}
if (userPO.getUserState() == 1) {
throw new UserAuthenticationException("账号已冻结");
if (userPO.getUserState() == UserStateEnum.UN_EXAMINE.getValue()) {
throw new SearchException("用户未审核");
}
if (isAccountExpired(userPO)) {
if (userPO.getUserState() == UserStateEnum.UN_PASS.getValue()) {
throw new SearchException("用户审核未通过");
}
if (userPO.getUserState() == UserStateEnum.LOCK.getValue()) {
throw new UserAuthenticationException("账号已锁定");
}
if (DateUtil.isDateExpired(userPO.getUserExpiredDate())) {
throw new UserAuthenticationException("账号已经过期");
}
return createUserBO(userPO);
@ -131,22 +140,4 @@ public class UserDetailServiceImpl implements UserDetailsService, IUserDetailChe
return true;
}
/**
* 账号是否过期
*
* @param userPO
* @return
*/
private boolean isAccountExpired(UserPO userPO) {
if (StringUtils.isBlank(userPO.getUserExpiredDate())) {
return false;
}
DateTime now = DateTime.now();
DateTime expiredDateTime = DateTime.parse(userPO.getUserExpiredDate(), DateTimeFormat.forPattern(ISystemConstant.DATE_FORMATTER_YYYY_MM_DD_HH_MM_SS));
if (expiredDateTime.isAfter(now)) {
return false;
}
return true;
}
}