From 1c9cf788cb881d9f703a109b5d948c01e190ef1d Mon Sep 17 00:00:00 2001 From: supersonicbi <15744192+supersonicbi@user.noreply.gitee.com> Date: Wed, 7 May 2025 14:11:01 +0800 Subject: [PATCH] (feature)(auth)Support deletion of user. --- .../authentication/adaptor/UserAdaptor.java | 2 ++ .../authentication/service/UserService.java | 2 ++ .../adaptor/DefaultUserAdaptor.java | 6 ++++++ .../persistence/repository/UserRepository.java | 2 ++ .../repository/impl/UserRepositoryImpl.java | 5 +++++ .../authentication/rest/UserController.java | 18 +++++++++++------- .../service/UserServiceImpl.java | 5 +++++ 7 files changed, 33 insertions(+), 7 deletions(-) diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java index 888bb87af..7945a7261 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java @@ -21,6 +21,8 @@ public interface UserAdaptor { void register(UserReq userReq); + void deleteUser(long userId); + String login(UserReq userReq, HttpServletRequest request); String login(UserReq userReq, String appKey); diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java index 2073349a8..2e6fbd403 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java @@ -23,6 +23,8 @@ public interface UserService { void register(UserReq userCmd); + void deleteUser(long userId); + String login(UserReq userCmd, HttpServletRequest request); String login(UserReq userCmd, String appKey); diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java index 9e1064b50..8e24db424 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java @@ -91,6 +91,12 @@ public class DefaultUserAdaptor implements UserAdaptor { userRepository.addUser(userDO); } + @Override + public void deleteUser(long userId) { + UserRepository userRepository = ContextUtils.getBean(UserRepository.class); + userRepository.deleteUser(userId); + } + @Override public String login(UserReq userReq, HttpServletRequest request) { TokenService tokenService = ContextUtils.getBean(TokenService.class); diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/UserRepository.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/UserRepository.java index 2bf1727cf..a15ceaab0 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/UserRepository.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/UserRepository.java @@ -24,4 +24,6 @@ public interface UserRepository { void deleteUserTokenByName(String userName); void deleteUserToken(Long tokenId); + + void deleteUser(long userId); } diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/impl/UserRepositoryImpl.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/impl/UserRepositoryImpl.java index 07ab94c75..511494cdd 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/impl/UserRepositoryImpl.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/impl/UserRepositoryImpl.java @@ -76,4 +76,9 @@ public class UserRepositoryImpl implements UserRepository { public void deleteUserToken(Long tokenId) { userTokenDOMapper.deleteById(tokenId); } + + @Override + public void deleteUser(long userId) { + userDOMapper.deleteById(userId); + } } diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/rest/UserController.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/rest/UserController.java index c7af8c570..9dcfae695 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/rest/UserController.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/rest/UserController.java @@ -9,13 +9,7 @@ import com.tencent.supersonic.common.pojo.User; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Set; @@ -67,6 +61,16 @@ public class UserController { userService.register(userCmd); } + @DeleteMapping("/delete/{userId}") + public void delete(@PathVariable("userId") long userId, HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse) throws IllegalAccessException { + User user = userService.getCurrentUser(httpServletRequest, httpServletResponse); + if (user.getIsAdmin() != 1) { + throw new IllegalAccessException("only admin can delete user"); + } + userService.deleteUser(userId); + } + @PostMapping("/login") public String login(@RequestBody UserReq userCmd, HttpServletRequest request) { return userService.login(userCmd, request); diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java index 3805f1d0a..faf88cbeb 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java @@ -70,6 +70,11 @@ public class UserServiceImpl implements UserService { ComponentFactory.getUserAdaptor().register(userReq); } + @Override + public void deleteUser(long userId) { + ComponentFactory.getUserAdaptor().deleteUser(userId); + } + @Override public String login(UserReq userReq, HttpServletRequest request) { return ComponentFactory.getUserAdaptor().login(userReq, request);