This is an automated email from the ASF dual-hosted git repository.

jinyleechina pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new f03b0e8  to feature-7301 (#7308)
f03b0e8 is described below

commit f03b0e8c7b562b77715185cbaeacc598cba87e12
Author: ouyangyewei <[email protected]>
AuthorDate: Fri Dec 10 14:40:06 2021 +0800

    to feature-7301 (#7308)
    
    Co-authored-by: ouyangyewei <[email protected]>
---
 .../api/controller/AccessTokenController.java      | 22 +++++++++++++++++++
 .../apache/dolphinscheduler/api/enums/Status.java  |  1 +
 .../api/service/AccessTokenService.java            |  9 ++++++++
 .../api/service/impl/AccessTokenServiceImpl.java   | 25 ++++++++++++++++++++++
 .../src/main/resources/i18n/messages.properties    |  1 +
 .../main/resources/i18n/messages_en_US.properties  |  1 +
 .../main/resources/i18n/messages_zh_CN.properties  |  1 +
 .../api/controller/AccessTokenControllerTest.java  | 13 +++++++++++
 .../api/service/AccessTokenServiceTest.java        | 21 ++++++++++++++++++
 .../dao/mapper/AccessTokenMapper.java              | 10 +++++++++
 .../dao/mapper/AccessTokenMapper.xml               |  7 ++++++
 11 files changed, 111 insertions(+)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AccessTokenController.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AccessTokenController.java
index 3fb59ee..202194b 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AccessTokenController.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AccessTokenController.java
@@ -17,6 +17,7 @@
 
 package org.apache.dolphinscheduler.api.controller;
 
+import static 
org.apache.dolphinscheduler.api.enums.Status.QUERY_ACCESSTOKEN_BY_USER_ERROR;
 import static 
org.apache.dolphinscheduler.api.enums.Status.CREATE_ACCESS_TOKEN_ERROR;
 import static 
org.apache.dolphinscheduler.api.enums.Status.DELETE_ACCESS_TOKEN_ERROR;
 import static 
org.apache.dolphinscheduler.api.enums.Status.GENERATE_TOKEN_ERROR;
@@ -141,6 +142,27 @@ public class AccessTokenController extends BaseController {
     }
 
     /**
+     * query access token for specified user
+     *
+     * @param loginUser login user
+     * @param userId user id
+     * @return token list for specified user
+     */
+    @ApiOperation(value = "queryAccessTokenByUser", notes = 
"QUERY_ACCESS_TOKEN_BY_USER_NOTES")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "userId", value = "USER_ID", dataType = "Int")
+    })
+    @GetMapping(value = "/user/{userId}")
+    @ResponseStatus(HttpStatus.OK)
+    @ApiException(QUERY_ACCESSTOKEN_BY_USER_ERROR)
+    @AccessLogAnnotation(ignoreRequestArgs = "loginUser")
+    public Result queryAccessTokenByUser(@ApiIgnore @RequestAttribute(value = 
Constants.SESSION_USER) User loginUser,
+            @PathVariable("userId") Integer userId) {
+        Map<String, Object> result = 
this.accessTokenService.queryAccessTokenByUser(loginUser, userId);
+        return this.returnDataList(result);
+    }
+
+    /**
      * delete access token by id
      *
      * @param loginUser login user
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 23979c7..cc6f4fc 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -305,6 +305,7 @@ public enum Status {
     UPDATE_ACCESS_TOKEN_ERROR(70013, "update access token error", 
"更新访问token错误"),
     DELETE_ACCESS_TOKEN_ERROR(70014, "delete access token error", 
"删除访问token错误"),
     ACCESS_TOKEN_NOT_EXIST(70015, "access token not exist", "访问token不存在"),
+    QUERY_ACCESSTOKEN_BY_USER_ERROR(70016, "query access token by user error", 
"查询访问指定用户的token错误"),
 
 
     COMMAND_STATE_COUNT_ERROR(80001, "task instance state count error", 
"查询各状态任务实例数错误"),
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AccessTokenService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AccessTokenService.java
index fc4ed78..b3e14ee 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AccessTokenService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AccessTokenService.java
@@ -39,6 +39,15 @@ public interface AccessTokenService {
     Result queryAccessTokenList(User loginUser, String searchVal, Integer 
pageNo, Integer pageSize);
 
     /**
+     * query access token for specified user
+     *
+     * @param loginUser login user
+     * @param userId user id
+     * @return token list for specified user
+     */
+    Map<String, Object> queryAccessTokenByUser(User loginUser, Integer userId);
+
+    /**
      * create token
      *
      * @param userId token for user
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AccessTokenServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AccessTokenServiceImpl.java
index 3904846..f5e434a 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AccessTokenServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AccessTokenServiceImpl.java
@@ -31,6 +31,7 @@ import 
org.apache.dolphinscheduler.dao.mapper.AccessTokenMapper;
 
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.slf4j.Logger;
@@ -79,6 +80,30 @@ public class AccessTokenServiceImpl extends BaseServiceImpl 
implements AccessTok
     }
 
     /**
+     * query access token for specified user
+     *
+     * @param loginUser login user
+     * @param userId user id
+     * @return token list for specified user
+     */
+    @Override
+    public Map<String, Object> queryAccessTokenByUser(User loginUser, Integer 
userId) {
+        Map<String, Object> result = new HashMap<>();
+        result.put(Constants.STATUS, false);
+
+        // only admin can operate
+        if (isNotAdmin(loginUser, result)) {
+            return result;
+        }
+
+        // query access token for specified user
+        List<AccessToken> accessTokenList = 
this.accessTokenMapper.queryAccessTokenByUser(userId);
+        result.put(Constants.DATA_LIST, accessTokenList);
+        this.putMsg(result, Status.SUCCESS);
+        return result;
+    }
+
+    /**
      * create token
      *
      * @param userId token for user
diff --git a/dolphinscheduler-api/src/main/resources/i18n/messages.properties 
b/dolphinscheduler-api/src/main/resources/i18n/messages.properties
index 971149a..282dcf4 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages.properties
@@ -145,6 +145,7 @@ TASK_RECORD_TAG=task record related operation
 QUERY_TASK_RECORD_LIST_PAGING_NOTES=query task record list paging 
 CREATE_TOKEN_NOTES=create token ,note: please login first
 QUERY_ACCESS_TOKEN_LIST_NOTES=query access token list paging
+QUERY_ACCESS_TOKEN_BY_USER_NOTES=query access token for specified user
 SCHEDULE=schedule
 WARNING_TYPE=warning type(sending strategy)
 WARNING_GROUP_ID=warning group id
diff --git 
a/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties 
b/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties
index 9f1288e..4b48d4a 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties
@@ -161,6 +161,7 @@ TASK_RECORD_TAG=task record related operation
 QUERY_TASK_RECORD_LIST_PAGING_NOTES=query task record list paging 
 CREATE_TOKEN_NOTES=create token ,note: please login first
 QUERY_ACCESS_TOKEN_LIST_NOTES=query access token list paging
+QUERY_ACCESS_TOKEN_BY_USER_NOTES=query access token for specified user
 SCHEDULE=schedule
 WARNING_TYPE=warning type(sending strategy)
 WARNING_GROUP_ID=warning group id
diff --git 
a/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties 
b/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties
index b606702..e6ede24 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties
@@ -150,6 +150,7 @@ TASK_RECORD_TAG=任务记录相关操作
 QUERY_TASK_RECORD_LIST_PAGING_NOTES=分页查询任务记录列表
 CREATE_TOKEN_NOTES=创建token,注意需要先登录
 QUERY_ACCESS_TOKEN_LIST_NOTES=分页查询access token列表
+QUERY_ACCESS_TOKEN_BY_USER_NOTES=查询指定用户的access token
 SCHEDULE=定时
 WARNING_TYPE=发送策略
 WARNING_GROUP_ID=发送组ID
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AccessTokenControllerTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AccessTokenControllerTest.java
index 761f85e..b77c7ab 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AccessTokenControllerTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AccessTokenControllerTest.java
@@ -111,6 +111,19 @@ public class AccessTokenControllerTest extends 
AbstractControllerTest {
     }
 
     @Test
+    public void testQueryAccessTokenByUser() throws Exception {
+        MvcResult mvcResult = this.mockMvc
+                .perform(get("/access-tokens/user/1")
+                .header("sessionId", this.sessionId))
+                .andExpect(status().isOk())
+                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+                .andReturn();
+        Result result = 
JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), 
Result.class);
+        Assert.assertEquals(Status.SUCCESS.getCode(), 
result.getCode().intValue());
+        logger.info(mvcResult.getResponse().getContentAsString());
+    }
+
+    @Test
     public void testDelAccessTokenById() throws Exception {
         testCreateToken();
         MvcResult mvcResult = mockMvc.perform(delete("/access-tokens/1")
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AccessTokenServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AccessTokenServiceTest.java
index 3b8ef6b..8f8554f 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AccessTokenServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AccessTokenServiceTest.java
@@ -38,11 +38,13 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import org.assertj.core.util.Lists;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -80,6 +82,25 @@ public class AccessTokenServiceTest {
     }
 
     @Test
+    public void testQueryAccessTokenByUser() {
+        List<AccessToken> accessTokenList = 
Lists.newArrayList(this.getEntity());
+        
Mockito.when(this.accessTokenMapper.queryAccessTokenByUser(1)).thenReturn(accessTokenList);
+
+        // USER_NO_OPERATION_PERM
+        User user = this.getLoginUser();
+        user.setUserType(UserType.GENERAL_USER);
+        Map<String, Object> result = 
this.accessTokenService.queryAccessTokenByUser(user, 1);
+        logger.info(result.toString());
+        Assert.assertEquals(Status.USER_NO_OPERATION_PERM, 
result.get(Constants.STATUS));
+
+        // SUCCESS
+        user.setUserType(UserType.ADMIN_USER);
+        result = this.accessTokenService.queryAccessTokenByUser(user, 1);
+        logger.info(result.toString());
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
+    }
+
+    @Test
     public void testCreateToken() {
 
         when(accessTokenMapper.insert(any(AccessToken.class))).thenReturn(2);
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.java
index 472ba35..3c73a56 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.java
@@ -25,6 +25,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
+import java.util.List;
+
 /**
  * accesstoken mapper interface
  */
@@ -45,6 +47,14 @@ public interface AccessTokenMapper extends 
BaseMapper<AccessToken> {
     );
 
     /**
+     * Query access token for specified user
+     *
+     * @param userId userId
+     * @return access token for specified user
+     */
+    List<AccessToken> queryAccessTokenByUser(@Param("userId") int userId);
+
+    /**
      * delete by userId
      *
      * @param userId userId
diff --git 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.xml
 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.xml
index 35312fb..ef6ce82 100644
--- 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.xml
+++ 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.xml
@@ -31,6 +31,13 @@
         </if>
         order by t.update_time desc
     </select>
+
+    <select id="queryAccessTokenByUser" 
resultType="org.apache.dolphinscheduler.dao.entity.AccessToken">
+        select `id`, `user_id`, `token`, `expire_time`, `create_time`, 
`update_time`
+        from `t_ds_access_token`
+        where `user_id` = #{userId}
+    </select>
+
     <delete id="deleteAccessTokenByUserId">
         delete from t_ds_access_token
         where user_id = #{userId}

Reply via email to