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());
+    }
 }

Reply via email to