分离不同状态的数据 #11
@@ -34,6 +34,7 @@ public enum ResponseEnum {
|
|||||||
PWD_NOT_SAME(3602, "新密码与原密码不相同"),
|
PWD_NOT_SAME(3602, "新密码与原密码不相同"),
|
||||||
LOGIN_EXPIRED(3700, "登陆过期"),
|
LOGIN_EXPIRED(3700, "登陆过期"),
|
||||||
LOGOUT(3710, "账户已注销"),
|
LOGOUT(3710, "账户已注销"),
|
||||||
|
CAN_NOT_USE(3711, "账户不可用"),
|
||||||
PWD_WRONG(3800, "密码不正确"),
|
PWD_WRONG(3800, "密码不正确"),
|
||||||
|
|
||||||
JWT_EXPIRED(3810, "Token过期"),
|
JWT_EXPIRED(3810, "Token过期"),
|
||||||
|
|||||||
@@ -22,6 +22,12 @@ public class MyException extends RuntimeException {
|
|||||||
this.code = e.getCode();
|
this.code = e.getCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MyException(ResponseEnum e, Object result) {
|
||||||
|
super(e.getMsg());
|
||||||
|
this.code = e.getCode();
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
public MyException(ResponseEnum e, String msg) {
|
public MyException(ResponseEnum e, String msg) {
|
||||||
super(msg + e.getMsg());
|
super(msg + e.getMsg());
|
||||||
this.code = e.getCode();
|
this.code = e.getCode();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package cn.celess.blog.service.serviceimpl;
|
|||||||
|
|
||||||
import cn.celess.blog.enmu.ResponseEnum;
|
import cn.celess.blog.enmu.ResponseEnum;
|
||||||
import cn.celess.blog.enmu.RoleEnum;
|
import cn.celess.blog.enmu.RoleEnum;
|
||||||
|
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
||||||
import cn.celess.blog.entity.Response;
|
import cn.celess.blog.entity.Response;
|
||||||
import cn.celess.blog.entity.User;
|
import cn.celess.blog.entity.User;
|
||||||
import cn.celess.blog.entity.model.PageData;
|
import cn.celess.blog.entity.model.PageData;
|
||||||
@@ -99,6 +100,12 @@ public class UserServiceImpl implements UserService {
|
|||||||
if (!RegexUtil.pwdMatch(loginReq.getPassword())) {
|
if (!RegexUtil.pwdMatch(loginReq.getPassword())) {
|
||||||
throw new MyException(ResponseEnum.PARAMETERS_PWD_ERROR);
|
throw new MyException(ResponseEnum.PARAMETERS_PWD_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
User user = userMapper.findByEmail(loginReq.getEmail());
|
||||||
|
if (user.getStatus() != UserAccountStatusEnum.NORMAL.getCode()) {
|
||||||
|
throw new MyException(ResponseEnum.CAN_NOT_USE, UserAccountStatusEnum.get(user.getStatus()));
|
||||||
|
}
|
||||||
|
|
||||||
//获取redis缓存中登录失败次数
|
//获取redis缓存中登录失败次数
|
||||||
String s = redisUtil.get(loginReq.getEmail() + "-passwordWrongTime");
|
String s = redisUtil.get(loginReq.getEmail() + "-passwordWrongTime");
|
||||||
if (s != null) {
|
if (s != null) {
|
||||||
@@ -106,8 +113,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
throw new MyException(ResponseEnum.LOGIN_LATER, loginReq.getEmail());
|
throw new MyException(ResponseEnum.LOGIN_LATER, loginReq.getEmail());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
User user = null;
|
|
||||||
user = userMapper.findByEmail(loginReq.getEmail());
|
|
||||||
String token = null;
|
String token = null;
|
||||||
// 密码比对
|
// 密码比对
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
package cn.celess.blog.service;
|
package cn.celess.blog.service;
|
||||||
|
|
||||||
import cn.celess.blog.BaseTest;
|
import cn.celess.blog.BaseTest;
|
||||||
|
import cn.celess.blog.enmu.ResponseEnum;
|
||||||
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
||||||
|
import cn.celess.blog.entity.User;
|
||||||
import cn.celess.blog.entity.model.PageData;
|
import cn.celess.blog.entity.model.PageData;
|
||||||
import cn.celess.blog.entity.model.UserModel;
|
import cn.celess.blog.entity.model.UserModel;
|
||||||
|
import cn.celess.blog.entity.request.LoginReq;
|
||||||
|
import cn.celess.blog.exception.MyException;
|
||||||
|
import cn.celess.blog.mapper.UserMapper;
|
||||||
|
import cn.celess.blog.util.MD5Util;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -12,6 +18,8 @@ import static org.junit.Assert.*;
|
|||||||
public class UserServiceTest extends BaseTest {
|
public class UserServiceTest extends BaseTest {
|
||||||
@Autowired
|
@Autowired
|
||||||
UserService userService;
|
UserService userService;
|
||||||
|
@Autowired
|
||||||
|
UserMapper userMapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getUserList() {
|
public void getUserList() {
|
||||||
@@ -27,4 +35,39 @@ public class UserServiceTest extends BaseTest {
|
|||||||
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.LOCKED.getCode()));
|
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.LOCKED.getCode()));
|
||||||
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.DELETED.getCode()));
|
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.DELETED.getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLogin() {
|
||||||
|
// 测试账户 被锁 被删除 登录
|
||||||
|
String email = randomStr(5) + "@celess.cn";
|
||||||
|
String pwd = MD5Util.getMD5("123456789");
|
||||||
|
User user = new User(email, pwd);
|
||||||
|
userMapper.addUser(user);
|
||||||
|
assertNotNull(user.getId());
|
||||||
|
|
||||||
|
user = userMapper.findByEmail(email);
|
||||||
|
LoginReq loginReq = new LoginReq(email, "123456789", false);
|
||||||
|
UserModel login = userService.login(loginReq);
|
||||||
|
assertEquals(UserAccountStatusEnum.NORMAL, login.getStatus());
|
||||||
|
|
||||||
|
userMapper.lock(user.getId());
|
||||||
|
try {
|
||||||
|
userService.login(loginReq);
|
||||||
|
fail("测试登录被锁账户 失败!");
|
||||||
|
} catch (MyException e) {
|
||||||
|
assertEquals(ResponseEnum.CAN_NOT_USE.getCode(), e.getCode());
|
||||||
|
assertEquals(UserAccountStatusEnum.LOCKED, e.getResult());
|
||||||
|
}
|
||||||
|
|
||||||
|
userMapper.delete(user.getId());
|
||||||
|
try {
|
||||||
|
userService.login(loginReq);
|
||||||
|
fail("测试登录被删除账户 失败!");
|
||||||
|
} catch (MyException e) {
|
||||||
|
assertEquals(ResponseEnum.CAN_NOT_USE.getCode(), e.getCode());
|
||||||
|
assertEquals(UserAccountStatusEnum.DELETED, e.getResult());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user