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.
61 lines
1.9 KiB
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;
|
|
}
|
|
} |