You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jiedui/src/service/UserService.java

61 lines
1.9 KiB

package service;
import model.User;
import utils.FileStorage;
import utils.PasswordValidator;
import java.util.HashMap;
import java.util.Map;
public class UserService {
private Map<String, User> users = new HashMap<>();
private FileStorage fileStorage = new FileStorage();
public UserService() {
users = fileStorage.loadUsers(); //加载所有已有的用户
}
/*注册用户第一阶段-生成验证码*/
public String registerUser(String email) {
if (users.containsKey(email) && users.get(email).isRegistered()){
return "registered"; //注册过的用户不能再注册
//return null;
}
if (users.containsKey(email)) {
return "recheck your email"; //已发过验证码也不再发了
//return null;
}
String code = String.valueOf(100000 + (int)(Math.random() * 900000)); //生成6位注册码
users.put(email, new User(email, code));
fileStorage.saveUsers(users);
return code;
}
/*注册用户第二阶段-完成注册*/
public boolean completeRegistration(String email, String code, String password) {
User user = users.get(email);
if (user != null && user.getRegistrationCode().equals(code) && PasswordValidator.isValid(password)) {
user.setPassword(password);
user.setRegistered(true);
fileStorage.saveUsers(users);
return true;
}
return false;
}
/*用户登录*/
public boolean login(String email, String password) {
User user = users.get(email);
return user != null && user.isRegistered() && user.getPassword().equals(password);
}
/*修改密码*/
public boolean changePassword(String email, String oldPassword, String newPassword) {
User user = users.get(email);
if (user != null && user.getPassword().equals(oldPassword) && PasswordValidator.isValid(newPassword)) {
user.setPassword(newPassword);
fileStorage.saveUsers(users);
return true;
}
return false;
}
}