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

fuweng11 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 02ebba2fc8 [INLONG-12179][Manager] Cluster node adds permission 
verification (#12180)
02ebba2fc8 is described below

commit 02ebba2fc84a4607a205e45bc7f77b89737b7c71
Author: fuweng11 <[email protected]>
AuthorDate: Tue Aug 11 15:46:28 2026 +0800

    [INLONG-12179][Manager] Cluster node adds permission verification (#12180)
    
    * [INLONG-12179][Manager] Cluster node adds permission verification
    
    * [INLONG-12179][Manager] Cluster node adds permission verification
    
    * [INLONG-12179][Manager] Cluster node adds permission verification
    
    ---------
    
    Co-authored-by: wakefu <[email protected]>
---
 .../web/controller/InlongClusterController.java        | 18 ++++++++++++++----
 .../openapi/OpenInLongClusterController.java           | 17 +++++++++++++++++
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git 
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
 
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
index 9ebe381b4c..5e16180529 100644
--- 
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
+++ 
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
@@ -48,7 +48,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -89,6 +88,7 @@ public class InlongClusterController {
     @GetMapping(value = "/cluster/tag/get/{id}")
     @ApiOperation(value = "Get cluster tag by id")
     @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<ClusterTagResponse> getTag(@PathVariable Integer id) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.getTag(id, currentUser));
@@ -96,6 +96,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/tag/list")
     @ApiOperation(value = "List cluster tags")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<PageResult<ClusterTagResponse>> listTag(@RequestBody 
ClusterTagPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.isInlongAdminOrTenantAdmin());
@@ -132,6 +133,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/tenant/tag/list")
     @ApiOperation(value = "List tenant cluster tags")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<PageResult<TenantClusterTagInfo>> 
listTenantTag(@RequestBody TenantClusterTagPageRequest request) {
         return Response.success(clusterService.listTenantTag(request));
     }
@@ -162,7 +164,7 @@ public class InlongClusterController {
     @PostMapping(value = "/cluster/save")
     @ApiOperation(value = "Save cluster")
     @OperationLog(operation = OperationType.CREATE, operationTarget = 
OperationTarget.CLUSTER)
-    @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN, 
UserRoleCode.TENANT_ADMIN})
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Integer> save(@Validated(SaveValidation.class) 
@RequestBody ClusterRequest request) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.save(request, currentUser));
@@ -171,6 +173,7 @@ public class InlongClusterController {
     @GetMapping(value = "/cluster/get/{id}")
     @ApiOperation(value = "Get cluster by id")
     @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<ClusterInfo> get(@PathVariable Integer id) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.get(id, currentUser));
@@ -178,6 +181,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/list")
     @ApiOperation(value = "List clusters")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<PageResult<ClusterInfo>> list(@RequestBody 
ClusterPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(
@@ -248,6 +252,7 @@ public class InlongClusterController {
     @GetMapping(value = "/cluster/node/get/{id}")
     @ApiOperation(value = "Get cluster node by id")
     @ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<ClusterNodeResponse> getNode(@PathVariable Integer id) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.getNode(id, currentUser));
@@ -255,6 +260,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/node/list")
     @ApiOperation(value = "List cluster nodes by pagination")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<PageResult<ClusterNodeResponse>> listNode(@RequestBody 
ClusterPageRequest request) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.listNode(request, currentUser));
@@ -287,6 +293,7 @@ public class InlongClusterController {
     @ApiOperation(value = "Delete cluster node")
     @OperationLog(operation = OperationType.DELETE, operationTarget = 
OperationTarget.CLUSTER_NODE)
     @ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> deleteNode(@PathVariable Integer id) {
         return Response.success(clusterService.deleteNode(id, 
LoginUserUtils.getLoginUser().getName()));
     }
@@ -295,26 +302,28 @@ public class InlongClusterController {
     @ApiOperation(value = "Delete cluster node")
     @OperationLog(operation = OperationType.DELETE, operationTarget = 
OperationTarget.CLUSTER_NODE)
     @ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> unloadNode(@PathVariable Integer id) {
         return Response.success(clusterService.unloadNode(id, 
LoginUserUtils.getLoginUser().getName()));
     }
 
     @RequestMapping(value = "/cluster/node/getManagerSSHPublicKey", method = 
RequestMethod.GET)
     @ApiOperation(value = "Obtain the SSH public key from the manager to 
install the agent.")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<String> getManagerSSHPublicKey() {
         return Response.success(clusterService.getManagerSSHPublicKey());
     }
 
     @PostMapping("/cluster/node/testSSHConnection")
     @ApiOperation(value = "Test SSH connection for inlong cluster node")
-    @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN, 
UserRoleCode.TENANT_ADMIN})
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> testSSHConnection(@RequestBody ClusterNodeRequest 
request) {
         return Response.success(clusterService.testSSHConnection(request));
     }
 
     @PostMapping("/cluster/testConnection")
     @ApiOperation(value = "Test connection for inlong cluster")
-    @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN, 
UserRoleCode.TENANT_ADMIN})
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> testConnection(@Validated @RequestBody 
ClusterRequest request) {
         return Response.success(clusterService.testConnection(request));
     }
@@ -323,6 +332,7 @@ public class InlongClusterController {
     @ApiOperation(value = "Start inlong cluster process")
     @OperationLog(operation = OperationType.START, operationTarget = 
OperationTarget.CLUSTER)
     @ApiImplicitParam(name = "clusterTag", value = "Inlong cluster tag", 
dataTypeClass = String.class)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> startProcess(@PathVariable String clusterTag,
             @RequestParam(required = false, defaultValue = "false") boolean 
sync) {
         String operator = LoginUserUtils.getLoginUser().getName();
diff --git 
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
 
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
index 0e6224eaee..6e24b5bd2d 100644
--- 
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
+++ 
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
@@ -77,6 +77,7 @@ public class OpenInLongClusterController {
     @GetMapping(value = "/cluster/tag/get/{id}")
     @ApiOperation(value = "Get cluster tag by id")
     @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<ClusterTagResponse> getTag(@PathVariable Integer id) {
         Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, "tag 
id cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -85,6 +86,7 @@ public class OpenInLongClusterController {
 
     @PostMapping(value = "/cluster/tag/list")
     @ApiOperation(value = "List cluster tags")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<List<ClusterTagResponse>> listTag(@RequestBody 
ClusterTagPageRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -96,6 +98,7 @@ public class OpenInLongClusterController {
     @PostMapping(value = "/cluster/tag/save")
     @ApiOperation(value = "Save cluster tag")
     @OperationLog(operation = OperationType.CREATE, operationTarget = 
OperationTarget.CLUSTER)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Integer> saveTag(@Validated(SaveValidation.class) 
@RequestBody ClusterTagRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -105,6 +108,7 @@ public class OpenInLongClusterController {
     @PostMapping(value = "/cluster/tag/update")
     @OperationLog(operation = OperationType.UPDATE, operationTarget = 
OperationTarget.CLUSTER)
     @ApiOperation(value = "Update cluster tag")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> updateTag(@Validated(UpdateValidation.class) 
@RequestBody ClusterTagRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -115,6 +119,7 @@ public class OpenInLongClusterController {
     @ApiOperation(value = "Delete cluster tag by id")
     @OperationLog(operation = OperationType.DELETE, operationTarget = 
OperationTarget.CLUSTER)
     @ApiImplicitParam(name = "id", value = "Cluster tag ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> deleteTag(@PathVariable Integer id) {
         Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, "tag 
id cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -124,6 +129,7 @@ public class OpenInLongClusterController {
     @GetMapping(value = "/cluster/get/{id}")
     @ApiOperation(value = "Get cluster by id")
     @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<ClusterInfo> get(@PathVariable Integer id) {
         Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, 
"cluster id cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -132,6 +138,7 @@ public class OpenInLongClusterController {
 
     @PostMapping(value = "/cluster/list")
     @ApiOperation(value = "List clusters")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<List<ClusterInfo>> list(@RequestBody ClusterPageRequest 
request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -143,6 +150,7 @@ public class OpenInLongClusterController {
     @PostMapping(value = "/cluster/save")
     @ApiOperation(value = "Save cluster")
     @OperationLog(operation = OperationType.CREATE, operationTarget = 
OperationTarget.CLUSTER)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Integer> save(@Validated(SaveValidation.class) 
@RequestBody ClusterRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -152,6 +160,7 @@ public class OpenInLongClusterController {
     @PostMapping(value = "/cluster/update")
     @ApiOperation(value = "Update cluster")
     @OperationLog(operation = OperationType.UPDATE, operationTarget = 
OperationTarget.CLUSTER)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> update(@Validated(UpdateByIdValidation.class) 
@RequestBody ClusterRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -161,6 +170,7 @@ public class OpenInLongClusterController {
     @PostMapping(value = "/cluster/bindTag")
     @ApiOperation(value = "Bind or unbind cluster tag")
     @OperationLog(operation = OperationType.UPDATE, operationTarget = 
OperationTarget.CLUSTER)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> bindTag(@Validated @RequestBody BindTagRequest 
request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -171,6 +181,7 @@ public class OpenInLongClusterController {
     @ApiOperation(value = "Delete cluster by id")
     @OperationLog(operation = OperationType.DELETE, operationTarget = 
OperationTarget.CLUSTER)
     @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> delete(@PathVariable Integer id) {
         Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, 
"cluster id cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -180,6 +191,7 @@ public class OpenInLongClusterController {
     @GetMapping(value = "/cluster/node/get/{id}")
     @ApiOperation(value = "Get cluster node by id")
     @ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<ClusterNodeResponse> getNode(@PathVariable Integer id) {
         Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, 
"Cluster node id cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -188,6 +200,7 @@ public class OpenInLongClusterController {
 
     @PostMapping(value = "/cluster/node/list")
     @ApiOperation(value = "List cluster nodes")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<List<ClusterNodeResponse>> listNode(@RequestBody 
ClusterPageRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -213,6 +226,7 @@ public class OpenInLongClusterController {
     @PostMapping(value = "/cluster/node/save")
     @ApiOperation(value = "Save cluster node")
     @OperationLog(operation = OperationType.CREATE, operationTarget = 
OperationTarget.CLUSTER)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Integer> saveNode(@Validated @RequestBody 
ClusterNodeRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -222,6 +236,7 @@ public class OpenInLongClusterController {
     @RequestMapping(value = "/cluster/node/update", method = 
RequestMethod.POST)
     @OperationLog(operation = OperationType.UPDATE, operationTarget = 
OperationTarget.CLUSTER)
     @ApiOperation(value = "Update cluster node")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> updateNode(@Validated(UpdateValidation.class) 
@RequestBody ClusterNodeRequest request) {
         Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER, 
"request cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -232,6 +247,7 @@ public class OpenInLongClusterController {
     @ApiOperation(value = "Delete cluster node")
     @OperationLog(operation = OperationType.DELETE, operationTarget = 
OperationTarget.CLUSTER)
     @ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass = 
Integer.class, required = true)
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<Boolean> deleteNode(@PathVariable Integer id) {
         Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, 
"cluster id cannot be null");
         Preconditions.expectNotNull(LoginUserUtils.getLoginUser(), 
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -250,6 +266,7 @@ public class OpenInLongClusterController {
 
     @PostMapping(value = "/cluster/tenant/tag/list")
     @ApiOperation(value = "List tenant cluster tags")
+    @RequiresRoles(UserRoleCode.INLONG_ADMIN)
     public Response<PageResult<TenantClusterTagInfo>> 
listTenantTag(@RequestBody TenantClusterTagPageRequest request) {
         return Response.success(clusterService.listTenantTag(request));
     }

Reply via email to