feat: 修改权限功能
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.helix.controller;
|
package com.onixbyte.helix.controller;
|
||||||
|
|
||||||
import com.onixbyte.helix.domain.web.request.UsernamePasswordLoginRequest;
|
import com.onixbyte.helix.domain.web.request.LoginRequest;
|
||||||
import com.onixbyte.helix.domain.web.response.LoginSuccessResponse;
|
import com.onixbyte.helix.domain.web.response.LoginSuccessResponse;
|
||||||
import com.onixbyte.helix.service.AuthService;
|
import com.onixbyte.helix.service.AuthService;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -29,7 +29,7 @@ public class AuthController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
public LoginSuccessResponse loginWithUsernameAndPassword(
|
public LoginSuccessResponse loginWithUsernameAndPassword(
|
||||||
@Validated @RequestBody UsernamePasswordLoginRequest request
|
@Validated @RequestBody LoginRequest request
|
||||||
) {
|
) {
|
||||||
return authService.login(request);
|
return authService.login(request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.onixbyte.helix.controller;
|
|||||||
|
|
||||||
import com.onixbyte.helix.domain.entity.Authority;
|
import com.onixbyte.helix.domain.entity.Authority;
|
||||||
import com.onixbyte.helix.domain.web.request.AddAuthorityRequest;
|
import com.onixbyte.helix.domain.web.request.AddAuthorityRequest;
|
||||||
|
import com.onixbyte.helix.domain.web.request.EditAuthorityRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest;
|
import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest;
|
||||||
import com.onixbyte.helix.service.AuthorityService;
|
import com.onixbyte.helix.service.AuthorityService;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -36,4 +37,9 @@ public class AuthorityController {
|
|||||||
public Authority addAuthority(@Validated @RequestBody AddAuthorityRequest request) {
|
public Authority addAuthority(@Validated @RequestBody AddAuthorityRequest request) {
|
||||||
return authorityService.addAuthority(request);
|
return authorityService.addAuthority(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PutMapping
|
||||||
|
public Authority editAuthority(@Validated @RequestBody EditAuthorityRequest request) {
|
||||||
|
return authorityService.editAuthority(request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.onixbyte.helix.controller;
|
|||||||
import com.onixbyte.helix.domain.web.request.AddUserRequest;
|
import com.onixbyte.helix.domain.web.request.AddUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.QueryUserRequest;
|
import com.onixbyte.helix.domain.web.request.QueryUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.ResetPasswordRequest;
|
import com.onixbyte.helix.domain.web.request.ResetPasswordRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.UpdateUserRequest;
|
import com.onixbyte.helix.domain.web.request.EditUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.response.UserDetailResponse;
|
import com.onixbyte.helix.domain.web.response.UserDetailResponse;
|
||||||
import com.onixbyte.helix.service.UserService;
|
import com.onixbyte.helix.service.UserService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -64,7 +64,7 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping
|
@PutMapping
|
||||||
public ResponseEntity<Void> editUser(@Validated @RequestBody UpdateUserRequest request) {
|
public ResponseEntity<Void> editUser(@Validated @RequestBody EditUserRequest request) {
|
||||||
userService.updateUser(request);
|
userService.updateUser(request);
|
||||||
return ResponseEntity.ok(null);
|
return ResponseEntity.ok(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.onixbyte.helix.domain.web.request;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
|
public record EditAuthorityRequest(
|
||||||
|
Long id,
|
||||||
|
String name,
|
||||||
|
String description,
|
||||||
|
@Pattern(
|
||||||
|
regexp = "^(ACTIVE|INACTIVE)?$",
|
||||||
|
message = "状态参数错误")
|
||||||
|
String status
|
||||||
|
) {
|
||||||
|
}
|
||||||
+1
-1
@@ -4,7 +4,7 @@ import com.onixbyte.helix.enumeration.UserStatus;
|
|||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Positive;
|
import jakarta.validation.constraints.Positive;
|
||||||
|
|
||||||
public record UpdateUserRequest(
|
public record EditUserRequest(
|
||||||
@NotNull(message = "User ID cannot be null")
|
@NotNull(message = "User ID cannot be null")
|
||||||
@Positive(message = "User ID must be positive")
|
@Positive(message = "User ID must be positive")
|
||||||
Long id,
|
Long id,
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.onixbyte.helix.domain.web.request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login data.
|
||||||
|
*
|
||||||
|
* @param username username
|
||||||
|
* @param password password
|
||||||
|
* @param uuid captcha uuid
|
||||||
|
* @param captcha captcha code
|
||||||
|
*/
|
||||||
|
public record LoginRequest(
|
||||||
|
String username,
|
||||||
|
String password,
|
||||||
|
String uuid,
|
||||||
|
String captcha
|
||||||
|
) {
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package com.onixbyte.helix.domain.web.request;
|
|
||||||
|
|
||||||
public record UsernamePasswordLoginRequest(
|
|
||||||
String username,
|
|
||||||
String password,
|
|
||||||
String uuid,
|
|
||||||
String captcha
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,9 @@ package com.onixbyte.helix.manager;
|
|||||||
|
|
||||||
import com.onixbyte.helix.domain.database.query.wrapper.QueryAuthorityWrapper;
|
import com.onixbyte.helix.domain.database.query.wrapper.QueryAuthorityWrapper;
|
||||||
import com.onixbyte.helix.domain.entity.Authority;
|
import com.onixbyte.helix.domain.entity.Authority;
|
||||||
|
import com.onixbyte.helix.domain.web.request.EditAuthorityRequest;
|
||||||
|
import com.onixbyte.helix.enumeration.Status;
|
||||||
|
import com.onixbyte.helix.exception.BizException;
|
||||||
import com.onixbyte.helix.mapper.AuthorityMapper;
|
import com.onixbyte.helix.mapper.AuthorityMapper;
|
||||||
import com.onixbyte.helix.repository.AuthorityRepository;
|
import com.onixbyte.helix.repository.AuthorityRepository;
|
||||||
import com.onixbyte.helix.shared.CacheName;
|
import com.onixbyte.helix.shared.CacheName;
|
||||||
@@ -12,9 +15,12 @@ import org.springframework.cache.annotation.Cacheable;
|
|||||||
import org.springframework.data.domain.Example;
|
import org.springframework.data.domain.Example;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class AuthorityManager {
|
public class AuthorityManager {
|
||||||
@@ -49,4 +55,21 @@ public class AuthorityManager {
|
|||||||
public Authority save(Authority authority) {
|
public Authority save(Authority authority) {
|
||||||
return authorityRepository.save(authority);
|
return authorityRepository.save(authority);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Authority update(EditAuthorityRequest request) {
|
||||||
|
var authority = authorityRepository.findById(request.id())
|
||||||
|
.orElseThrow(() -> new BizException(HttpStatus.NOT_FOUND, "找不到指定的权限信息"));
|
||||||
|
|
||||||
|
Optional.ofNullable(request.name())
|
||||||
|
.ifPresent(authority::setName);
|
||||||
|
|
||||||
|
authority.setDescription(request.description());
|
||||||
|
|
||||||
|
Optional.ofNullable(request.status())
|
||||||
|
.map(Status::valueOf)
|
||||||
|
.ifPresent(authority::setStatus);
|
||||||
|
|
||||||
|
return authority;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.onixbyte.helix.service;
|
|||||||
import com.onixbyte.helix.client.TokenClient;
|
import com.onixbyte.helix.client.TokenClient;
|
||||||
import com.onixbyte.helix.shared.SettingName;
|
import com.onixbyte.helix.shared.SettingName;
|
||||||
import com.onixbyte.helix.domain.entity.Setting;
|
import com.onixbyte.helix.domain.entity.Setting;
|
||||||
import com.onixbyte.helix.domain.web.request.UsernamePasswordLoginRequest;
|
import com.onixbyte.helix.domain.web.request.LoginRequest;
|
||||||
import com.onixbyte.helix.domain.web.response.LoginSuccessResponse;
|
import com.onixbyte.helix.domain.web.response.LoginSuccessResponse;
|
||||||
import com.onixbyte.helix.exception.BizException;
|
import com.onixbyte.helix.exception.BizException;
|
||||||
import com.onixbyte.helix.manager.CaptchaManager;
|
import com.onixbyte.helix.manager.CaptchaManager;
|
||||||
@@ -49,7 +49,7 @@ public class AuthService {
|
|||||||
* @return user information and user identity token
|
* @return user information and user identity token
|
||||||
* @throws BizException if the user does not exist, or the username and password are incorrect
|
* @throws BizException if the user does not exist, or the username and password are incorrect
|
||||||
*/
|
*/
|
||||||
public LoginSuccessResponse login(UsernamePasswordLoginRequest request) {
|
public LoginSuccessResponse login(LoginRequest request) {
|
||||||
var captchaEnabled = Optional.ofNullable(settingManager.getSettingByName(SettingName.CAPTCHA_ENABLED))
|
var captchaEnabled = Optional.ofNullable(settingManager.getSettingByName(SettingName.CAPTCHA_ENABLED))
|
||||||
.map(Setting::asBoolean)
|
.map(Setting::asBoolean)
|
||||||
.orElse(false);
|
.orElse(false);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.onixbyte.helix.service;
|
|||||||
import com.onixbyte.helix.domain.database.query.wrapper.QueryAuthorityWrapper;
|
import com.onixbyte.helix.domain.database.query.wrapper.QueryAuthorityWrapper;
|
||||||
import com.onixbyte.helix.domain.entity.Authority;
|
import com.onixbyte.helix.domain.entity.Authority;
|
||||||
import com.onixbyte.helix.domain.web.request.AddAuthorityRequest;
|
import com.onixbyte.helix.domain.web.request.AddAuthorityRequest;
|
||||||
|
import com.onixbyte.helix.domain.web.request.EditAuthorityRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest;
|
import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest;
|
||||||
import com.onixbyte.helix.enumeration.Status;
|
import com.onixbyte.helix.enumeration.Status;
|
||||||
import com.onixbyte.helix.exception.BizException;
|
import com.onixbyte.helix.exception.BizException;
|
||||||
@@ -45,4 +46,8 @@ public class AuthorityService {
|
|||||||
|
|
||||||
return authorityManager.save(authority);
|
return authorityManager.save(authority);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Authority editAuthority(EditAuthorityRequest request) {
|
||||||
|
return authorityManager.update(request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import com.onixbyte.helix.domain.entity.UserRole;
|
|||||||
import com.onixbyte.helix.domain.web.request.AddUserRequest;
|
import com.onixbyte.helix.domain.web.request.AddUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.QueryUserRequest;
|
import com.onixbyte.helix.domain.web.request.QueryUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.ResetPasswordRequest;
|
import com.onixbyte.helix.domain.web.request.ResetPasswordRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.UpdateUserRequest;
|
import com.onixbyte.helix.domain.web.request.EditUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.response.UserDetailResponse;
|
import com.onixbyte.helix.domain.web.response.UserDetailResponse;
|
||||||
import com.onixbyte.helix.manager.ApplicationManager;
|
import com.onixbyte.helix.manager.ApplicationManager;
|
||||||
import com.onixbyte.helix.manager.RoleManager;
|
import com.onixbyte.helix.manager.RoleManager;
|
||||||
@@ -134,7 +134,7 @@ public class UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Throwable.class)
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
public void updateUser(UpdateUserRequest request) {
|
public void updateUser(EditUserRequest request) {
|
||||||
userManager.updateUser(User.builder()
|
userManager.updateUser(User.builder()
|
||||||
.id(request.id())
|
.id(request.id())
|
||||||
.fullName(request.fullName())
|
.fullName(request.fullName())
|
||||||
|
|||||||
Reference in New Issue
Block a user