* @return map,key分别是success和message
*/
public Map<String, Object> modifyPassword(String oldPassword, String newPassword){
Map<String, Object> result = new HashMap<>();
String message;
User user = UserHolder.getCurrentLoginUser();
if(user == null){
message = "用户未登陆,不能修改密码";
result.put("success", false);
result.put("message", message);
LOG.error(message);
return result;
}
if(PropertyHolder.getBooleanProperty("demo")){
if(user.getUsername().equals("admin")){
message = "演示版本admin用户不能更改密码";
result.put("success", false);
result.put("message", message);
LOG.error(message);
return result;
}
}
//先对用户的密码策略进行验证
try{
passwordStrategyExecuter.check(newPassword);
}catch(PasswordInvalidException e){
result.put("success", false);
result.put("message", e.getMessage());
LOG.error(e.getMessage());
return result;
}
oldPassword=passwordEncoder.encode(oldPassword.trim(),user);
if(oldPassword.equals(user.getPassword())){
user.setPassword(passwordEncoder.encode(newPassword.trim(),user));
serviceFacade.update(user);
message = "修改成功";
result.put("success", true);
result.put("message", message);
LOG.info(message);