You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by he...@apache.org on 2022/04/27 02:46:32 UTC

[incubator-inlong] branch master updated: [INLONG-3919][Manager] Data consumption and data source module supports access control (#3960)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 007e79b4a [INLONG-3919][Manager] Data consumption and data source module supports access control (#3960)
007e79b4a is described below

commit 007e79b4a6de3e018f29ca619188ed4040a7d231
Author: wangheng <67...@qq.com>
AuthorDate: Wed Apr 27 10:46:27 2022 +0800

    [INLONG-3919][Manager] Data consumption and data source module supports access control (#3960)
---
 .../pojo/commonserver/CommonDbServerPageRequest.java |  5 ++++-
 .../common/pojo/consumption/ConsumptionQuery.java    |  5 ++++-
 .../resources/mappers/CommonDbServerEntityMapper.xml | 20 +++++++++++---------
 .../resources/mappers/ConsumptionEntityMapper.xml    |  5 +----
 .../service/core/impl/CommonDBServerServiceImpl.java |  2 ++
 .../service/core/impl/ConsumptionServiceImpl.java    |  4 ++++
 6 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/commonserver/CommonDbServerPageRequest.java b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/commonserver/CommonDbServerPageRequest.java
index 906e1d558..b162b56f3 100644
--- a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/commonserver/CommonDbServerPageRequest.java
+++ b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/commonserver/CommonDbServerPageRequest.java
@@ -35,9 +35,12 @@ public class CommonDbServerPageRequest extends PageRequest {
     @ApiModelProperty(value = "DB Server IP")
     private String dbServerIp;
 
-    @ApiModelProperty(value = "current user")
+    @ApiModelProperty(value = "current user", hidden = true)
     private String currentUser;
 
+    @ApiModelProperty(value = "Weather current user have admin role", hidden = true)
+    private Boolean isAdminRole = false;
+
     @ApiModelProperty(value = "The group the current user belongs to")
     private List<String> userGroups;
 }
diff --git a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/consumption/ConsumptionQuery.java b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/consumption/ConsumptionQuery.java
index fc9c44659..cac432fc5 100644
--- a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/consumption/ConsumptionQuery.java
+++ b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/consumption/ConsumptionQuery.java
@@ -72,9 +72,12 @@ public class ConsumptionQuery extends PageRequest {
 
     private String modifier;
 
-    @ApiModelProperty(value = "User")
+    @ApiModelProperty(value = "Current login user")
     private String userName;
 
+    @ApiModelProperty(value = "Weather current user have admin role", hidden = true)
+    private Boolean isAdminRole;
+
     @ApiModelProperty(value = "Fuzzy query keyword, fuzzy query topic, consumer group ID")
     private String keyword;
 }
diff --git a/inlong-manager/manager-dao/src/main/resources/mappers/CommonDbServerEntityMapper.xml b/inlong-manager/manager-dao/src/main/resources/mappers/CommonDbServerEntityMapper.xml
index 3679c8266..119396166 100644
--- a/inlong-manager/manager-dao/src/main/resources/mappers/CommonDbServerEntityMapper.xml
+++ b/inlong-manager/manager-dao/src/main/resources/mappers/CommonDbServerEntityMapper.xml
@@ -370,15 +370,17 @@
         from common_db_server
         <where>
             is_deleted = 0
-            and (creator = #{currentUser,jdbcType=VARCHAR}
-            or find_in_set(#{currentUser,jdbcType=VARCHAR},in_charges)
-            or find_in_set(#{currentUser,jdbcType=VARCHAR},visible_person)
-            <if test="userGroups!= null and userGroups.size() >0">
-                <foreach collection="userGroups" item="group">
-                    or find_in_set(#{group,jdbcType=VARCHAR},visible_group)
-                </foreach>
-            </if>
-            )
+            <if test="isAdminRole == false">
+                and (creator = #{currentUser,jdbcType=VARCHAR}
+                or find_in_set(#{currentUser,jdbcType=VARCHAR},in_charges)
+                or find_in_set(#{currentUser,jdbcType=VARCHAR},visible_person)
+                <if test="userGroups!= null and userGroups.size() >0">
+                    <foreach collection="userGroups" item="group">
+                        or find_in_set(#{group,jdbcType=VARCHAR},visible_group)
+                    </foreach>
+                </if>
+                )
+            </if>
             <if test="dbServerIp != null and dbServerIp != ''">
                 and db_server_ip = #{dbServerIp, jdbcType=VARCHAR}
             </if>
diff --git a/inlong-manager/manager-dao/src/main/resources/mappers/ConsumptionEntityMapper.xml b/inlong-manager/manager-dao/src/main/resources/mappers/ConsumptionEntityMapper.xml
index f283fd523..e0fd2ada4 100644
--- a/inlong-manager/manager-dao/src/main/resources/mappers/ConsumptionEntityMapper.xml
+++ b/inlong-manager/manager-dao/src/main/resources/mappers/ConsumptionEntityMapper.xml
@@ -263,9 +263,6 @@
             <bind name="consumerGroupIdLike" value="'%' + _parameter.consumerGroupIdLike + '%'"/>
             and c.consumer_group_id like #{consumerGroupIdLike,jdbcType=VARCHAR}
         </if>
-        <if test="inCharges != null and inCharges != ''">
-            and FIND_IN_SET(#{inCharges,jdbcType=VARCHAR}, c.in_charges)
-        </if>
         <if test="inlongGroupId != null and inlongGroupId != ''">
             and c.inlong_group_id = #{inlongGroupId,jdbcType=VARCHAR}
         </if>
@@ -294,7 +291,7 @@
         <if test="modifier != null and modifier != ''">
             and c.modifier = #{modifier,jdbcType=VARCHAR}
         </if>
-        <if test="userName != null and userName !=''">
+        <if test="isAdminRole == false">
             and (
             FIND_IN_SET(#{userName,jdbcType=VARCHAR},c.in_charges)
             or
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/CommonDBServerServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/CommonDBServerServiceImpl.java
index e9f983dee..e0f966c5c 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/CommonDBServerServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/CommonDBServerServiceImpl.java
@@ -27,6 +27,7 @@ import org.apache.inlong.manager.common.enums.GlobalConstants;
 import org.apache.inlong.manager.common.pojo.commonserver.CommonDbServerInfo;
 import org.apache.inlong.manager.common.pojo.commonserver.CommonDbServerListVo;
 import org.apache.inlong.manager.common.pojo.commonserver.CommonDbServerPageRequest;
+import org.apache.inlong.manager.common.pojo.user.UserRoleCode;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.LoginUserUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
@@ -488,6 +489,7 @@ public class CommonDBServerServiceImpl implements CommonDBServerService {
     public PageInfo<CommonDbServerListVo> listByCondition(CommonDbServerPageRequest request)
             throws Exception {
         String username = LoginUserUtils.getLoginUserDetail().getUserName();
+        request.setIsAdminRole(LoginUserUtils.getLoginUserDetail().getRoles().contains(UserRoleCode.ADMIN));
         LOGGER.debug("{} begin to list CommonDbServer info by {}", username, request);
         request.setCurrentUser(username);
 
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
index a12bf1008..cc5bc9256 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
@@ -38,9 +38,11 @@ import org.apache.inlong.manager.common.pojo.consumption.ConsumptionSummary;
 import org.apache.inlong.manager.common.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.common.pojo.group.InlongGroupTopicResponse;
 import org.apache.inlong.manager.common.pojo.stream.InlongStreamTopicResponse;
+import org.apache.inlong.manager.common.pojo.user.UserRoleCode;
 import org.apache.inlong.manager.common.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.common.pojo.workflow.form.NewConsumptionProcessForm;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
+import org.apache.inlong.manager.common.util.LoginUserUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.ConsumptionEntity;
 import org.apache.inlong.manager.dao.entity.ConsumptionPulsarEntity;
@@ -106,6 +108,7 @@ public class ConsumptionServiceImpl implements ConsumptionService {
     @Override
     public PageInfo<ConsumptionListVo> list(ConsumptionQuery query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
+        query.setIsAdminRole(LoginUserUtils.getLoginUserDetail().getRoles().contains(UserRoleCode.ADMIN));
         Page<ConsumptionEntity> pageResult = (Page<ConsumptionEntity>) consumptionMapper.listByQuery(query);
         PageInfo<ConsumptionListVo> pageInfo = pageResult
                 .toPageInfo(entity -> CommonBeanUtils.copyProperties(entity, ConsumptionListVo::new));
@@ -138,6 +141,7 @@ public class ConsumptionServiceImpl implements ConsumptionService {
     public boolean isConsumerGroupIdExists(String consumerGroup, Integer excludeSelfId) {
         ConsumptionQuery consumptionQuery = new ConsumptionQuery();
         consumptionQuery.setConsumerGroupId(consumerGroup);
+        consumptionQuery.setIsAdminRole(true);
         List<ConsumptionEntity> result = consumptionMapper.listByQuery(consumptionQuery);
         if (excludeSelfId != null) {
             result = result.stream().filter(consumer -> !excludeSelfId.equals(consumer.getId()))