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

kerwin 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 442f93544e [Bug][Api-Server]Fix bug when user without tenant uploads 
file in resource center (#10303)
442f93544e is described below

commit 442f93544eef5436f82a0c9f7dacde93d4347090
Author: Eric Gao <[email protected]>
AuthorDate: Wed Jun 1 17:22:36 2022 +0800

    [Bug][Api-Server]Fix bug when user without tenant uploads file in resource 
center (#10303)
---
 docs/docs/en/guide/resource/file-manage.md             |  6 +++++-
 docs/docs/zh/guide/resource/file-manage.md             |  4 ++++
 .../api/service/impl/ResourcesServiceImpl.java         |  6 ++++++
 .../api/service/ResourcesServiceTest.java              | 18 ++++++++++++++++--
 4 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/docs/docs/en/guide/resource/file-manage.md 
b/docs/docs/en/guide/resource/file-manage.md
index 87b965801b..533ad194b8 100644
--- a/docs/docs/en/guide/resource/file-manage.md
+++ b/docs/docs/en/guide/resource/file-manage.md
@@ -4,7 +4,11 @@ When third party jars are used in the scheduling process or 
user defined scripts
 
 ![file-manage](/img/new_ui/dev/resource/file-manage.png)
 
-## Basic Operator
+> **_Note:_**
+>
+> * When you manage files as `admin`, remember to set up `tenant` for `admin` 
first. 
+
+## Basic Operations
 
 ### Create a File
 
diff --git a/docs/docs/zh/guide/resource/file-manage.md 
b/docs/docs/zh/guide/resource/file-manage.md
index a0d2f0ab56..76ab354a70 100644
--- a/docs/docs/zh/guide/resource/file-manage.md
+++ b/docs/docs/zh/guide/resource/file-manage.md
@@ -2,6 +2,10 @@
 
 当在调度过程中需要使用到第三方的 jar 
或者用户需要自定义脚本的情况,可以通过在该页面完成相关操作。可创建的文件类型包括:`txt/log/sh/conf/py/java` 
等。并且可以对文件进行编辑、重命名、下载和删除等操作。
 
+> **_注意:_**
+>
+> * 当您以`admin`身份等入并操作文件时,需要先给`admin`设置租户
+
 ## 基础操作
 
 ![file-manage](/img/new_ui/dev/resource/file-manage.png)
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
index 9b01b36e7d..e47a8e5e18 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
@@ -238,6 +238,12 @@ public class ResourcesServiceImpl extends BaseServiceImpl 
implements ResourcesSe
             return result;
         }
 
+        // make sure login user has tenant
+        String tenantCode = getTenantCode(loginUser.getId(), result);
+        if (StringUtils.isEmpty(tenantCode)) {
+            return result;
+        }
+
         result = verifyFile(name, type, file);
         if (!result.getCode().equals(Status.SUCCESS.getCode())) {
             return result;
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
index 5541e12303..285092d3ee 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
@@ -144,13 +144,27 @@ public class ResourcesServiceTest {
         User user = new User();
         user.setId(1);
         user.setUserType(UserType.GENERAL_USER);
+
+        //CURRENT_LOGIN_USER_TENANT_NOT_EXIST
+        MockMultipartFile mockMultipartFile = new 
MockMultipartFile("test.pdf", "test.pdf", "pdf", "test".getBytes());
+        
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(true);
+        Mockito.when(userMapper.selectById(1)).thenReturn(getUser());
+        Mockito.when(tenantMapper.queryById(1)).thenReturn(null);
+        Result result = resourcesService.createResource(user, 
"ResourcesServiceTest", "ResourcesServiceTest", ResourceType.FILE, 
mockMultipartFile, -1, "/");
+        logger.info(result.toString());
+        
Assert.assertEquals(Status.CURRENT_LOGIN_USER_TENANT_NOT_EXIST.getMsg(), 
result.getMsg());
+        //set tenant for user
+        user.setTenantId(1);
+        Mockito.when(tenantMapper.queryById(1)).thenReturn(getTenant());
+
         //HDFS_NOT_STARTUP
-        Result result = resourcesService.createResource(user, 
"ResourcesServiceTest", "ResourcesServiceTest", ResourceType.FILE, null, -1, 
"/");
+        
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(false);
+        result = resourcesService.createResource(user, "ResourcesServiceTest", 
"ResourcesServiceTest", ResourceType.FILE, null, -1, "/");
         logger.info(result.toString());
         Assert.assertEquals(Status.STORAGE_NOT_STARTUP.getMsg(), 
result.getMsg());
 
         //RESOURCE_FILE_IS_EMPTY
-        MockMultipartFile mockMultipartFile = new 
MockMultipartFile("test.pdf", "".getBytes());
+        mockMultipartFile = new MockMultipartFile("test.pdf", "".getBytes());
         
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(true);
         result = resourcesService.createResource(user, "ResourcesServiceTest", 
"ResourcesServiceTest", ResourceType.FILE, mockMultipartFile, -1, "/");
         logger.info(result.toString());

Reply via email to