This is an automated email from the ASF dual-hosted git repository.
SbloodyS 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 d4e1498c41 [Improvement-18589][API] Align cluster query permissions
(#18590)
d4e1498c41 is described below
commit d4e1498c4126f77032a1e6c8c413bf715731c2ca
Author: Wenjun Ruan <[email protected]>
AuthorDate: Wed Aug 26 16:18:36 2026 +0800
[Improvement-18589][API] Align cluster query permissions (#18590)
Co-authored-by: xiangzihao <[email protected]>
---
.../api/controller/ClusterController.java | 9 +++----
.../api/service/ClusterService.java | 14 +++++++----
.../api/service/impl/ClusterServiceImpl.java | 28 ++++++++++++++++++----
.../api/service/impl/ClusterServiceTest.java | 28 +++++++++++++++++-----
4 files changed, 59 insertions(+), 20 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ClusterController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ClusterController.java
index d1236bc736..a47eaba885 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ClusterController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ClusterController.java
@@ -136,7 +136,7 @@ public class ClusterController extends BaseController {
public Result<ClusterDto> queryClusterByCode(@Parameter(hidden = true)
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("clusterCode")
Long clusterCode) {
- ClusterDto clusterDto = clusterService.queryClusterByCode(clusterCode);
+ ClusterDto clusterDto = clusterService.queryClusterByCode(loginUser,
clusterCode);
return Result.success(clusterDto);
}
@@ -164,7 +164,8 @@ public class ClusterController extends BaseController {
checkPageParams(pageNo, pageSize);
searchVal = ParameterUtils.handleEscapes(searchVal);
- PageInfo<ClusterDto> clusterDtoPageInfo =
clusterService.queryClusterListPaging(pageNo, pageSize, searchVal);
+ PageInfo<ClusterDto> clusterDtoPageInfo =
clusterService.queryClusterListPaging(loginUser, pageNo, pageSize,
+ searchVal);
return Result.success(clusterDtoPageInfo);
}
@@ -201,7 +202,7 @@ public class ClusterController extends BaseController {
@ResponseStatus(HttpStatus.OK)
@ApiException(QUERY_CLUSTER_ERROR)
public Result<List<ClusterDto>> queryAllClusterList(@Parameter(hidden =
true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
- List<ClusterDto> clusterDtos = clusterService.queryAllClusterList();
+ List<ClusterDto> clusterDtos =
clusterService.queryAllClusterList(loginUser);
return Result.success(clusterDtos);
}
@@ -221,7 +222,7 @@ public class ClusterController extends BaseController {
@ApiException(VERIFY_CLUSTER_ERROR)
public Result<Boolean> verifyCluster(@Parameter(hidden = true)
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "clusterName")
String clusterName) {
- clusterService.verifyCluster(clusterName);
+ clusterService.verifyCluster(loginUser, clusterName);
return Result.success(true);
}
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ClusterService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ClusterService.java
index d8a04df4e8..d4c4c1d174 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ClusterService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ClusterService.java
@@ -47,9 +47,10 @@ public interface ClusterService {
/**
* query cluster
*
- * @param code cluster code
+ * @param loginUser login user
+ * @param code cluster code
*/
- ClusterDto queryClusterByCode(Long code);
+ ClusterDto queryClusterByCode(User loginUser, Long code);
/**
* delete cluster
@@ -73,26 +74,29 @@ public interface ClusterService {
/**
* query cluster paging
*
+ * @param loginUser login user
* @param pageNo page number
* @param searchVal search value
* @param pageSize page size
* @return cluster list page
*/
- PageInfo<ClusterDto> queryClusterListPaging(Integer pageNo, Integer
pageSize, String searchVal);
+ PageInfo<ClusterDto> queryClusterListPaging(User loginUser, Integer
pageNo, Integer pageSize, String searchVal);
/**
* query all cluster
*
+ * @param loginUser login user
* @return all cluster list
*/
- List<ClusterDto> queryAllClusterList();
+ List<ClusterDto> queryAllClusterList(User loginUser);
/**
* verify cluster name
*
+ * @param loginUser login user
* @param clusterName cluster name
* @return true if the cluster name not exists, otherwise return false
*/
- void verifyCluster(String clusterName);
+ void verifyCluster(User loginUser, String clusterName);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceImpl.java
index b764729d9a..b7e45b53ac 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceImpl.java
@@ -106,13 +106,18 @@ public class ClusterServiceImpl extends BaseServiceImpl
implements ClusterServic
/**
* query cluster paging
*
+ * @param loginUser login user
* @param pageNo page number
* @param searchVal search value
* @param pageSize page size
* @return cluster list page
*/
@Override
- public PageInfo<ClusterDto> queryClusterListPaging(Integer pageNo, Integer
pageSize, String searchVal) {
+ public PageInfo<ClusterDto> queryClusterListPaging(User loginUser, Integer
pageNo, Integer pageSize,
+ String searchVal) {
+ if (isNotAdmin(loginUser)) {
+ throw new ServiceException(Status.USER_NO_OPERATION_PERM);
+ }
Page<Cluster> page = new Page<>(pageNo, pageSize);
@@ -136,10 +141,15 @@ public class ClusterServiceImpl extends BaseServiceImpl
implements ClusterServic
/**
* query all cluster
*
+ * @param loginUser login user
* @return all cluster list
*/
@Override
- public List<ClusterDto> queryAllClusterList() {
+ public List<ClusterDto> queryAllClusterList(User loginUser) {
+ if (isNotAdmin(loginUser)) {
+ throw new ServiceException(Status.USER_NO_OPERATION_PERM);
+ }
+
List<Cluster> clusterList = clusterDao.queryAllClusterList();
if (CollectionUtils.isEmpty(clusterList)) {
return Collections.emptyList();
@@ -157,10 +167,14 @@ public class ClusterServiceImpl extends BaseServiceImpl
implements ClusterServic
/**
* query cluster
*
- * @param code cluster code
+ * @param loginUser login user
+ * @param code cluster code
*/
@Override
- public ClusterDto queryClusterByCode(Long code) {
+ public ClusterDto queryClusterByCode(User loginUser, Long code) {
+ if (isNotAdmin(loginUser)) {
+ throw new ServiceException(Status.USER_NO_OPERATION_PERM);
+ }
Cluster cluster = clusterDao.queryByClusterCode(code);
@@ -270,11 +284,15 @@ public class ClusterServiceImpl extends BaseServiceImpl
implements ClusterServic
/**
* verify cluster name
*
+ * @param loginUser login user
* @param clusterName cluster name
* @return true if the cluster name not exists, otherwise return false
*/
@Override
- public void verifyCluster(String clusterName) {
+ public void verifyCluster(User loginUser, String clusterName) {
+ if (isNotAdmin(loginUser)) {
+ throw new ServiceException(Status.USER_NO_OPERATION_PERM);
+ }
if (StringUtils.isEmpty(clusterName)) {
throw new ServiceException(Status.CLUSTER_NAME_IS_NULL);
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
index 68c0dc8b0e..381ec66205 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
@@ -141,19 +141,26 @@ public class ClusterServiceTest {
@Test
public void testQueryAllClusterList() {
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> clusterService.queryAllClusterList(getGeneralUser()));
+
when(clusterDao.queryAllClusterList()).thenReturn(Lists.newArrayList(getCluster()));
- List<ClusterDto> clusterDtos = clusterService.queryAllClusterList();
+ List<ClusterDto> clusterDtos =
clusterService.queryAllClusterList(getAdminUser());
Assertions.assertEquals(clusterDtos.size(), 1);
}
@Test
public void testQueryClusterListPaging() {
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> clusterService.queryClusterListPaging(getGeneralUser(),
1, 10, clusterName));
+
IPage<Cluster> page = new Page<>(1, 10);
page.setRecords(getList());
page.setTotal(1L);
when(clusterDao.queryClusterListPaging(Mockito.any(Page.class),
Mockito.eq(clusterName))).thenReturn(page);
- PageInfo<ClusterDto> clusterDtoPageInfo =
clusterService.queryClusterListPaging(1, 10, clusterName);
+ PageInfo<ClusterDto> clusterDtoPageInfo =
clusterService.queryClusterListPaging(getAdminUser(), 1, 10,
+ clusterName);
Assertions.assertTrue(CollectionUtils.isNotEmpty(clusterDtoPageInfo.getTotalList()));
}
@@ -170,11 +177,15 @@ public class ClusterServiceTest {
@Test
public void testQueryClusterByCode() {
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> clusterService.queryClusterByCode(getGeneralUser(), 1L));
+
when(clusterDao.queryByClusterCode(1L)).thenReturn(null);
- assertThrowsServiceException(Status.QUERY_CLUSTER_BY_CODE_ERROR, () ->
clusterService.queryClusterByCode(1L));
+ assertThrowsServiceException(Status.QUERY_CLUSTER_BY_CODE_ERROR,
+ () -> clusterService.queryClusterByCode(getAdminUser(), 1L));
when(clusterDao.queryByClusterCode(1L)).thenReturn(getCluster());
- ClusterDto clusterDto = clusterService.queryClusterByCode(1L);
+ ClusterDto clusterDto =
clusterService.queryClusterByCode(getAdminUser(), 1L);
assertNotNull(clusterDto);
}
@@ -196,10 +207,15 @@ public class ClusterServiceTest {
@Test
public void testVerifyCluster() {
- assertThrowsServiceException(Status.CLUSTER_NAME_IS_NULL, () ->
clusterService.verifyCluster(""));
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> clusterService.verifyCluster(getGeneralUser(),
clusterName));
+
+ assertThrowsServiceException(Status.CLUSTER_NAME_IS_NULL,
+ () -> clusterService.verifyCluster(getAdminUser(), ""));
when(clusterDao.queryByClusterName(clusterName)).thenReturn(getCluster());
- assertThrowsServiceException(Status.CLUSTER_NAME_EXISTS, () ->
clusterService.verifyCluster(clusterName));
+ assertThrowsServiceException(Status.CLUSTER_NAME_EXISTS,
+ () -> clusterService.verifyCluster(getAdminUser(),
clusterName));
}
private Cluster getCluster() {