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);