This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/paimon-webui.git
The following commit(s) were added to refs/heads/main by this push:
new cf0a23a [Feature] Add the user password change api (#204)
cf0a23a is described below
commit cf0a23a840b2f2e298a9113fce383e5d2e94201a
Author: s7monk <[email protected]>
AuthorDate: Wed May 1 07:51:35 2024 +0800
[Feature] Add the user password change api (#204)
---
.../web/server/controller/UserController.java | 15 +++++++++++++++
.../paimon/web/server/service/UserService.java | 8 ++++++++
.../web/server/service/impl/UserServiceImpl.java | 7 +++++++
.../web/server/controller/UserControllerTest.java | 22 ++++++++++++++++++++++
4 files changed, 52 insertions(+)
diff --git
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/UserController.java
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/UserController.java
index 30158f8..25de1f5 100644
---
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/UserController.java
+++
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/UserController.java
@@ -125,4 +125,19 @@ public class UserController {
public R<Void> delete(@PathVariable Integer[] userIds) {
return userService.deleteUserByIds(userIds) > 0 ? R.succeed() :
R.failed();
}
+
+ /**
+ * Changes a user's password.
+ *
+ * @param user the user object containing the new password
+ * @return a response entity indicating success or failure
+ */
+ @SaCheckPermission("system:user:change:password")
+ @PostMapping("/change/password")
+ public R<Void> changePassword(@Validated @RequestBody User user) {
+ if (userService.getUserById(user.getId()) == null) {
+ return R.failed(USER_NOT_EXIST);
+ }
+ return userService.changePassword(user) ? R.succeed() : R.failed();
+ }
}
diff --git
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
index 774d3a8..3bcc4b8 100644
---
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
+++
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
@@ -107,4 +107,12 @@ public interface UserService extends IService<User> {
* @return the number of rows affected
*/
int deleteUserByIds(Integer[] userIds);
+
+ /**
+ * Changes the user's password.
+ *
+ * @param user The user object containing the necessary password
information.
+ * @return true if the password was successfully changed, false otherwise.
+ */
+ boolean changePassword(User user);
}
diff --git
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
index 99f77be..d754828 100644
---
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
+++
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
@@ -52,6 +52,7 @@ import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
import java.util.ArrayList;
import java.util.Arrays;
@@ -250,6 +251,12 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
return userMapper.deleteBatchIds(Arrays.asList(userIds));
}
+ @Override
+ public boolean changePassword(User user) {
+
user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes()));
+ return this.updateById(user);
+ }
+
private int insertUserRole(User user) {
int rows = 1;
if (user.getRoleIds() != null && user.getRoleIds().length > 0) {
diff --git
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/UserControllerTest.java
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/UserControllerTest.java
index eebeb95..37ca6aa 100644
---
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/UserControllerTest.java
+++
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/UserControllerTest.java
@@ -22,6 +22,7 @@ import org.apache.paimon.web.server.data.model.User;
import org.apache.paimon.web.server.data.result.PageR;
import org.apache.paimon.web.server.data.result.R;
import org.apache.paimon.web.server.data.vo.UserVO;
+import org.apache.paimon.web.server.mapper.UserMapper;
import org.apache.paimon.web.server.util.ObjectMapperUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -29,6 +30,7 @@ import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
+import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
@@ -51,6 +53,8 @@ public class UserControllerTest extends ControllerTestBase {
private static final int userId = 3;
private static final String username = "test";
+ @Autowired private UserMapper userMapper;
+
@Test
@Order(1)
public void testAddUser() throws Exception {
@@ -187,4 +191,22 @@ public class UserControllerTest extends ControllerTestBase
{
R<?> result = ObjectMapperUtils.fromJSON(delResponseString, R.class);
assertEquals(200, result.getCode());
}
+
+ @Test
+ public void testChangePassword() throws Exception {
+ User user = new User();
+ user.setId(2);
+ user.setPassword("common");
+ mockMvc.perform(
+ MockMvcRequestBuilders.post(userPath +
"/change/password")
+ .cookie(cookie)
+ .content(ObjectMapperUtils.toJSON(user))
+ .contentType(MediaType.APPLICATION_JSON_VALUE)
+ .accept(MediaType.APPLICATION_JSON_VALUE))
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print());
+
+ User newUser = userMapper.selectById(2);
+ assertEquals("9efab2399c7c560b34de477b9aa0a465",
newUser.getPassword());
+ }
}