|
|
@@ -6,6 +6,7 @@ import cn.reghao.devops.manager.account.model.constant.RoleType;
|
|
|
import cn.reghao.devops.manager.account.model.dto.CreateAccountDto;
|
|
|
import cn.reghao.devops.manager.account.model.po.Role;
|
|
|
import cn.reghao.devops.manager.account.service.AccountService;
|
|
|
+import cn.reghao.jutil.jdk.result.Result;
|
|
|
import cn.reghao.jutil.jdk.security.Cryptor;
|
|
|
import cn.reghao.jutil.jdk.security.Md5Cryptor;
|
|
|
import cn.reghao.jutil.jdk.security.RandomString;
|
|
|
@@ -61,28 +62,30 @@ public class AccountServiceImpl implements AccountService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void createAccount(CreateAccountDto createAccountDto) {
|
|
|
+ public Result createAccount(CreateAccountDto createAccountDto) {
|
|
|
+ int roleId = createAccountDto.getRoleId();
|
|
|
+ Role role = roleRepository.findById(roleId).orElse(null);
|
|
|
+ if (role == null) {
|
|
|
+ return Result.fail("role 不存在");
|
|
|
+ }
|
|
|
+
|
|
|
String username = createAccountDto.getUsername();
|
|
|
User user = userRepository.findByUsername(username);
|
|
|
if (user == null) {
|
|
|
String password = createAccountDto.getPassword();
|
|
|
String salt = RandomString.getSalt(64);
|
|
|
- String encodedPasswd = passwordEncoder.encode(password + salt);
|
|
|
+ String encodedPassword = passwordEncoder.encode(password + salt);
|
|
|
|
|
|
- user = new User(username, encodedPasswd, salt);
|
|
|
+ user = new User(username, encodedPassword, salt, Set.of(role.getName()));
|
|
|
userRepository.save(user);
|
|
|
+ return Result.success();
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- private void setEncryptPassword(User user) {
|
|
|
- String password = user.getPassword();
|
|
|
- String salt = RandomString.getSalt(64);
|
|
|
- String encryptPwd = cryptor.encrypt(password + salt);
|
|
|
- user.setPassword(encryptPwd);
|
|
|
- user.setSalt(salt);
|
|
|
+ String errMsg = String.format("帐号 %s 已存在", username);
|
|
|
+ return Result.fail(errMsg);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- // TODO 密码修改后是否应该清除用户 session?
|
|
|
@Override
|
|
|
public void updateAccountPassword(Integer userId, String newPassword) {
|
|
|
User userEntity = userRepository.findById(userId).orElse(null);
|
|
|
@@ -90,8 +93,9 @@ public class AccountServiceImpl implements AccountService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- userEntity.setPassword(newPassword);
|
|
|
- setEncryptPassword(userEntity);
|
|
|
+ String salt = RandomString.getSalt(64);
|
|
|
+ String encodedPassword = cryptor.encrypt(newPassword + salt);
|
|
|
+ userEntity.setEncodedPassword(encodedPassword);
|
|
|
userRepository.save(userEntity);
|
|
|
}
|
|
|
|