|
@@ -2,6 +2,7 @@ package cn.reghao.devops.web.admin.account.service.impl;
|
|
|
|
|
|
|
|
import cn.reghao.devops.web.admin.account.db.repository.RoleRepository;
|
|
import cn.reghao.devops.web.admin.account.db.repository.RoleRepository;
|
|
|
import cn.reghao.devops.web.admin.account.db.repository.UserRepository;
|
|
import cn.reghao.devops.web.admin.account.db.repository.UserRepository;
|
|
|
|
|
+import cn.reghao.devops.web.admin.account.model.constant.RoleType;
|
|
|
import cn.reghao.devops.web.admin.account.model.dto.CreateAccountDto;
|
|
import cn.reghao.devops.web.admin.account.model.dto.CreateAccountDto;
|
|
|
import cn.reghao.devops.web.admin.account.model.po.Role;
|
|
import cn.reghao.devops.web.admin.account.model.po.Role;
|
|
|
import cn.reghao.devops.web.admin.account.model.vo.UserVO;
|
|
import cn.reghao.devops.web.admin.account.model.vo.UserVO;
|
|
@@ -47,21 +48,23 @@ public class AccountServiceImpl implements AccountService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public Result createAccount(CreateAccountDto createAccountDto) {
|
|
public Result createAccount(CreateAccountDto createAccountDto) {
|
|
|
- Set<Integer> roleIds = createAccountDto.getRoleId();
|
|
|
|
|
- List<Role> roles = roleRepository.findAllById(roleIds);
|
|
|
|
|
- if (roles.isEmpty()) {
|
|
|
|
|
|
|
+ int roleId = createAccountDto.getRoleId();
|
|
|
|
|
+ Role role = roleRepository.findById(roleId).orElse(null);
|
|
|
|
|
+ if (role == null) {
|
|
|
return Result.fail("role 不存在");
|
|
return Result.fail("role 不存在");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (role.getName().equals(RoleType.ROLE_ADMIN.name())) {
|
|
|
|
|
+ return Result.fail("只有 admin 用户才能拥有 admin role");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
String username = createAccountDto.getUsername();
|
|
String username = createAccountDto.getUsername();
|
|
|
User user = userRepository.findByUsername(username);
|
|
User user = userRepository.findByUsername(username);
|
|
|
if (user == null) {
|
|
if (user == null) {
|
|
|
String password = createAccountDto.getPassword();
|
|
String password = createAccountDto.getPassword();
|
|
|
String salt = RandomString.getSalt(64);
|
|
String salt = RandomString.getSalt(64);
|
|
|
String encodedPassword = passwordEncoder.encode(password + salt);
|
|
String encodedPassword = passwordEncoder.encode(password + salt);
|
|
|
-
|
|
|
|
|
- Set<String> userRoles = roles.stream().map(Role::getName).collect(Collectors.toSet());
|
|
|
|
|
- user = new User(username, encodedPassword, salt, userRoles);
|
|
|
|
|
|
|
+ user = new User(username, encodedPassword, salt, Set.of(role.getName()));
|
|
|
userRepository.save(user);
|
|
userRepository.save(user);
|
|
|
return Result.success();
|
|
return Result.success();
|
|
|
}
|
|
}
|
|
@@ -100,17 +103,27 @@ public class AccountServiceImpl implements AccountService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public void updateAccountRole(AccountRole accountRole) {
|
|
|
|
|
|
|
+ public Result updateAccountRole(AccountRole accountRole) {
|
|
|
int userId = accountRole.getUserId();
|
|
int userId = accountRole.getUserId();
|
|
|
|
|
+ if (userId == 1) {
|
|
|
|
|
+ return Result.fail("admin 用户的 role 只能是 admin, 不能更改");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
User userEntity = userRepository.findById(userId).orElse(null);
|
|
User userEntity = userRepository.findById(userId).orElse(null);
|
|
|
if (userEntity == null) {
|
|
if (userEntity == null) {
|
|
|
- return;
|
|
|
|
|
|
|
+ return Result.fail("用户不存在");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Set<String> roles = accountRole.getRoles().stream().map(Role::getName).collect(Collectors.toSet());
|
|
|
|
|
- userEntity.setRole(roles);
|
|
|
|
|
|
|
+ Role role = accountRole.getRole();
|
|
|
|
|
+ if (role.getName().equals(RoleType.ROLE_ADMIN.name())) {
|
|
|
|
|
+ return Result.fail("只有 admin 用户才能拥有 admin role");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ userEntity.getRole().clear();
|
|
|
|
|
+ userEntity.getRole().add(role.getName());
|
|
|
userRepository.save(userEntity);
|
|
userRepository.save(userEntity);
|
|
|
accountSessionService.deactiveSession(userEntity);
|
|
accountSessionService.deactiveSession(userEntity);
|
|
|
|
|
+ return Result.success();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|