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

-## 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`设置租户
+
## 基础操作

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