This is an automated email from the ASF dual-hosted git repository.
nicholasjiang 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 b6902eee [Bugfix] Fix CdcJobDefinition list page without created user
(#390)
b6902eee is described below
commit b6902eee7e7fe2e594e3ef9b92ef8f2d1057baea
Author: 风向决定发型 <[email protected]>
AuthorDate: Sat Jun 15 11:37:23 2024 +0800
[Bugfix] Fix CdcJobDefinition list page without created user (#390)
---
.../service/impl/CdcJobDefinitionServiceImpl.java | 14 ++++++--
.../web/server/service/impl/UserServiceImpl.java | 6 ++--
.../controller/CdcJobDefinitionControllerTest.java | 37 ++++++++++++++++++++++
3 files changed, 53 insertions(+), 4 deletions(-)
diff --git
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/CdcJobDefinitionServiceImpl.java
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/CdcJobDefinitionServiceImpl.java
index 9d061f9a..7a99ee3c 100644
---
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/CdcJobDefinitionServiceImpl.java
+++
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/CdcJobDefinitionServiceImpl.java
@@ -37,12 +37,14 @@ import org.apache.paimon.web.server.data.model.cdc.CdcNode;
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.result.enums.Status;
+import org.apache.paimon.web.server.data.vo.UserInfoVO;
import org.apache.paimon.web.server.mapper.CdcJobDefinitionMapper;
import org.apache.paimon.web.server.service.CatalogService;
import org.apache.paimon.web.server.service.CdcJobDefinitionService;
import org.apache.paimon.web.server.service.ClusterService;
import org.apache.paimon.web.server.util.StringUtils;
+import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -62,7 +64,6 @@ public class CdcJobDefinitionServiceImpl
implements CdcJobDefinitionService {
@Autowired private CatalogService catalogService;
-
@Autowired private ClusterService clusterService;
@Override
@@ -73,12 +74,21 @@ public class CdcJobDefinitionServiceImpl
if (baseMapper.exists(queryWrapper)) {
return R.failed(Status.CDC_JOB_EXIST_ERROR);
}
+ String jobCreateUser;
+ if (StringUtils.isBlank(cdcJobDefinitionDTO.getCreateUser())) {
+ int loginId = StpUtil.getLoginIdAsInt();
+ UserInfoVO userInfoVo =
+ (UserInfoVO)
StpUtil.getSession().get(Integer.toString(loginId));
+ jobCreateUser = userInfoVo.getUser().getUsername();
+ } else {
+ jobCreateUser = cdcJobDefinitionDTO.getCreateUser();
+ }
CdcJobDefinition cdcJobDefinition =
CdcJobDefinition.builder()
.name(cdcJobDefinitionDTO.getName())
.config(cdcJobDefinitionDTO.getConfig())
.cdcType(cdcJobDefinitionDTO.getCdcType())
- .createUser(cdcJobDefinitionDTO.getCreateUser())
+ .createUser(jobCreateUser)
.description(cdcJobDefinitionDTO.getDescription())
.build();
baseMapper.insert(cdcJobDefinition);
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 9800bf12..7ceb284e 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
@@ -45,6 +45,7 @@ import org.apache.paimon.web.server.service.UserService;
import org.apache.paimon.web.server.util.StringUtils;
import cn.dev33.satoken.secure.SaSecureUtil;
+import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -122,10 +123,11 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
/*if (CollectionUtils.isEmpty(userInfoVo.getTenantList())) {
throw new UserNotBindTenantException();
}*/
-
+ // Setting login user info to SaSession.
StpUtil.login(user.getId(), loginDTO.isRememberMe());
userInfoVo.setPermissions(StpUtil.getPermissionList());
-
+ SaSession saSession = StpUtil.getSession();
+ saSession.set(user.getId().toString(), userInfoVo);
return userInfoVo;
}
diff --git
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/CdcJobDefinitionControllerTest.java
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/CdcJobDefinitionControllerTest.java
index 01762beb..14d3a8c2 100644
---
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/CdcJobDefinitionControllerTest.java
+++
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/CdcJobDefinitionControllerTest.java
@@ -20,10 +20,12 @@ package org.apache.paimon.web.server.controller;
import org.apache.paimon.web.server.data.dto.CdcJobDefinitionDTO;
import org.apache.paimon.web.server.data.dto.CdcJobSubmitDTO;
+import org.apache.paimon.web.server.data.dto.LoginDTO;
import org.apache.paimon.web.server.data.model.CdcJobDefinition;
import org.apache.paimon.web.server.data.model.ClusterInfo;
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.UserInfoVO;
import org.apache.paimon.web.server.util.ObjectMapperUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -71,6 +73,7 @@ public class CdcJobDefinitionControllerTest extends
ControllerTestBase {
@Order(1)
public void testCreateCdcJob() throws Exception {
testCreateCdcJob(cdcJobDefinitionDto());
+ checkCdcJobDefinitionAndSaSession();
}
@Test
@@ -120,6 +123,7 @@ public class CdcJobDefinitionControllerTest extends
ControllerTestBase {
assertEquals(realRdcJobDefinition.getName(),
cdcJobDefinition.getName());
assertEquals(realRdcJobDefinition.getDescription(),
cdcJobDefinition.getDescription());
assertEquals(realRdcJobDefinition.getConfig(),
cdcJobDefinition.getConfig());
+ assertEquals(realRdcJobDefinition.getCreateUser(),
cdcJobDefinition.getCreateUser());
}
@Order(3)
@@ -217,4 +221,37 @@ public class CdcJobDefinitionControllerTest extends
ControllerTestBase {
.andReturn()
.getResponse();
}
+
+ private void checkCdcJobDefinitionAndSaSession() throws Exception {
+ MockHttpServletResponse getCdcJobDefinitionResponse =
+ mockMvc.perform(
+
MockMvcRequestBuilders.get(cdcJobDefinitionPath + "/" + 1)
+ .cookie(cookie)
+
.contentType(MediaType.APPLICATION_JSON_VALUE)
+
.accept(MediaType.APPLICATION_JSON_VALUE))
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print())
+ .andReturn()
+ .getResponse();
+ R<CdcJobDefinition> getResult =
+ getR(getCdcJobDefinitionResponse, new
TypeReference<R<CdcJobDefinition>>() {});
+ LoginDTO login = new LoginDTO();
+ login.setUsername("admin");
+ login.setPassword("admin");
+ MockHttpServletResponse getLoginUserResponse =
+ mockMvc.perform(
+ MockMvcRequestBuilders.post("/api/login")
+
.content(ObjectMapperUtils.toJSON(login))
+
.contentType(MediaType.APPLICATION_JSON_VALUE)
+
.accept(MediaType.APPLICATION_JSON_VALUE))
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print())
+ .andReturn()
+ .getResponse();
+ R<UserInfoVO> getLoginuser =
+ getR(getLoginUserResponse, new TypeReference<R<UserInfoVO>>()
{});
+ assertEquals(
+ getResult.getData().getCreateUser(),
+ getLoginuser.getData().getUser().getUsername());
+ }
}