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