diff --git a/docs/docs/en/guide/resource/file-manage.md b/docs/docs/en/guide/resource/file-manage.md index 87b965801bc6e64220b987398b7bc0c0a83f19ae..533ad194b87e7631b374c4d9fce608c92c2545b5 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 a0d2f0ab568ca1cb259012abd2466010953bf508..76ab354a706585cfa0884b218cb6516d83b99a3d 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 9b01b36e7d7771940a2ac0014b8dc2ac2381679b..e47a8e5e1889c4791a6d056b9702b07cd877fff3 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 5541e12303bd1a1e9e28b853d8c39777bd305e84..285092d3eebe969901edacc23c21b95916405afc 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());