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/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 941e35dae [INLONG-8098][Manager] Support user permission control
(#8100)
941e35dae is described below
commit 941e35daec49172c74fe1e448b52659997964f7c
Author: vernedeng <[email protected]>
AuthorDate: Thu Jun 1 17:52:50 2023 +0800
[INLONG-8098][Manager] Support user permission control (#8100)
---
.../inlong/manager/client/cli/CreateCommand.java | 4 +-
.../inlong/manager/client/cli/ListCommand.java | 4 +-
.../client/cli/validator/UserTypeValidator.java | 4 +-
.../client/api/inner/ClientFactoryTest.java | 4 +-
.../manager/client/api/inner/NoAuthClientTest.java | 4 +-
.../{UserTypeEnum.java => TenantUserTypeEnum.java} | 20 ++---
.../{RoleEntity.java => InlongUserRoleEntity.java} | 9 +--
...Mapper.java => InlongUserRoleEntityMapper.java} | 15 ++--
.../mappers/InlongUserRoleEntityMapper.xml | 87 +++++++++++++++++++++
.../main/resources/mappers/RoleEntityMapper.xml | 71 -----------------
.../inlong/manager/pojo/user/InlongRoleInfo.java} | 43 +++++++---
.../manager/pojo/user/InlongRolePageRequest.java} | 33 ++++----
.../manager/pojo/user/InlongRoleRequest.java} | 44 +++++++----
.../inlong/manager/pojo/user/UserRequest.java | 4 +-
.../inlong/manager/pojo/user/UserRoleCode.java | 49 +++++++++++-
.../service/cluster/InlongClusterServiceImpl.java | 8 +-
.../service/core/impl/AuditServiceImpl.java | 2 +-
.../manager/service/group/GroupCheckService.java | 5 +-
.../service/group/InlongGroupProcessService.java | 4 +-
.../service/group/InlongGroupServiceImpl.java | 4 +-
.../manager/service/node/DataNodeServiceImpl.java | 10 +--
.../service/sink/StreamSinkServiceImpl.java | 6 +-
.../service/source/StreamSourceServiceImpl.java | 4 +-
.../service/stream/InlongStreamServiceImpl.java | 2 +-
.../manager/service/user/InlongRoleService.java} | 20 ++---
.../service/user/InlongRoleServiceImpl.java | 87 +++++++++++++++++++++
.../manager/service/user/UserServiceImpl.java | 13 ++--
.../service/user/InlongRoleServiceTest.java | 91 ++++++++++++++++++++++
.../service/user/TenantRoleServiceTest.java | 12 +--
.../main/resources/h2/apache_inlong_manager.sql | 24 +++++-
.../manager-web/sql/apache_inlong_manager.sql | 23 ++++++
inlong-manager/manager-web/sql/changes-1.8.0.sql | 26 ++++++-
.../auth/openapi/OpenAPIAuthenticatingRealm.java | 6 +-
.../manager/web/auth/web/WebAuthorizingRealm.java | 6 +-
.../manager/web/controller/AnnoController.java | 2 +-
.../manager/web/controller/DataNodeController.java | 11 +--
.../web/controller/InlongClusterController.java | 18 +++--
.../web/controller/InlongConsumeController.java | 5 +-
.../web/controller/InlongGroupController.java | 5 +-
...leController.java => InlongRoleController.java} | 55 +++++++------
.../web/controller/InlongStreamController.java | 4 +-
.../web/controller/InlongTenantRoleController.java | 6 +-
.../manager/web/controller/UserController.java | 4 +-
.../web/controller/WorkflowApproverController.java | 11 +--
.../manager/web/controller/AnnoControllerTest.java | 6 +-
.../workflow/core/impl/ProcessServiceImpl.java | 5 +-
46 files changed, 612 insertions(+), 268 deletions(-)
diff --git
a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/CreateCommand.java
b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/CreateCommand.java
index 62bc810e4..7d240f6a7 100644
---
a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/CreateCommand.java
+++
b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/CreateCommand.java
@@ -27,7 +27,7 @@ import
org.apache.inlong.manager.client.cli.pojo.CreateGroupConf;
import org.apache.inlong.manager.client.cli.util.ClientUtils;
import org.apache.inlong.manager.client.cli.validator.UserTypeValidator;
import org.apache.inlong.manager.common.enums.DataFormat;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.JsonUtils;
import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
@@ -254,7 +254,7 @@ public class CreateCommand extends AbstractCommand {
UserRequest request = new UserRequest();
request.setName(username);
request.setPassword(password);
- request.setAccountType(UserTypeEnum.parseName(type));
+ request.setAccountType(TenantUserTypeEnum.parseName(type));
request.setValidDays(validDays);
ClientUtils.initClientFactory();
UserClient userClient =
ClientUtils.clientFactory.getUserClient();
diff --git
a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
index 617769a94..a2673d60b 100644
---
a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
+++
b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
@@ -36,7 +36,7 @@ import org.apache.inlong.manager.client.cli.util.PrintUtils;
import org.apache.inlong.manager.client.cli.validator.ClusterTypeValidator;
import org.apache.inlong.manager.client.cli.validator.UserTypeValidator;
import org.apache.inlong.manager.common.enums.SimpleGroupStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
import org.apache.inlong.manager.pojo.cluster.ClusterNodeResponse;
import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
@@ -319,7 +319,7 @@ public class ListCommand extends AbstractCommand {
try {
ClientUtils.initClientFactory();
UserRequest request = new UserRequest();
- Integer integer = UserTypeEnum.parseName(type);
+ Integer integer = TenantUserTypeEnum.parseName(type);
request.setAccountType(integer);
request.setKeyword(username);
UserClient userClient =
ClientUtils.clientFactory.getUserClient();
diff --git
a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/validator/UserTypeValidator.java
b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/validator/UserTypeValidator.java
index c62e21a9f..216d66c35 100644
---
a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/validator/UserTypeValidator.java
+++
b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/validator/UserTypeValidator.java
@@ -17,7 +17,7 @@
package org.apache.inlong.manager.client.cli.validator;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import com.beust.jcommander.IParameterValidator;
import com.beust.jcommander.ParameterException;
@@ -27,7 +27,7 @@ public class UserTypeValidator implements IParameterValidator
{
@Override
public void validate(String name, String value) throws ParameterException {
try {
- UserTypeEnum.parseName(value);
+ TenantUserTypeEnum.parseName(value);
} catch (Exception e) {
throw new ParameterException(e.getMessage());
}
diff --git
a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
index 10ed615fd..62378840d 100644
---
a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
+++
b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
@@ -37,7 +37,7 @@ import org.apache.inlong.manager.common.consts.DataNodeType;
import org.apache.inlong.manager.common.consts.SinkType;
import org.apache.inlong.manager.common.consts.SourceType;
import org.apache.inlong.manager.common.enums.ClusterType;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.JsonUtils;
import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
@@ -1007,7 +1007,7 @@ class ClientFactoryTest {
request.setName("test_user");
request.setPassword("test_pwd");
request.setNewPassword("test_new_pwd");
- request.setAccountType(UserTypeEnum.ADMIN.getCode());
+ request.setAccountType(TenantUserTypeEnum.TENANT_ADMIN.getCode());
Integer userId = userClient.update(request);
Assertions.assertEquals(userId, 1);
}
diff --git
a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/NoAuthClientTest.java
b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/NoAuthClientTest.java
index b9161566d..b5085bfc2 100644
---
a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/NoAuthClientTest.java
+++
b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/NoAuthClientTest.java
@@ -18,7 +18,7 @@
package org.apache.inlong.manager.client.api.inner;
import org.apache.inlong.manager.client.api.inner.client.NoAuthClient;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.JsonUtils;
import org.apache.inlong.manager.pojo.common.Response;
import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -49,7 +49,7 @@ public class NoAuthClientTest extends ClientFactoryTest {
UserRequest request = UserRequest.builder()
.name("username")
.password("pwd")
- .accountType(UserTypeEnum.ADMIN.getCode())
+ .accountType(TenantUserTypeEnum.TENANT_ADMIN.getCode())
.validDays(9999)
.build();
diff --git
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/UserTypeEnum.java
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/TenantUserTypeEnum.java
similarity index 77%
rename from
inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/UserTypeEnum.java
rename to
inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/TenantUserTypeEnum.java
index 632cf81b2..97bd836b3 100644
---
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/UserTypeEnum.java
+++
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/TenantUserTypeEnum.java
@@ -27,39 +27,39 @@ import java.util.stream.Collectors;
/**
* User type enum
*/
-public enum UserTypeEnum implements IntListValuable {
+public enum TenantUserTypeEnum implements IntListValuable {
/**
* Has all privilege
*/
- ADMIN(0),
+ TENANT_ADMIN(0),
/**
* No privilege to manage the system
*/
- OPERATOR(1),
+ TENANT_OPERATOR(1),
;
@Getter
@JsonValue
private final Integer code;
- UserTypeEnum(Integer code) {
+ TenantUserTypeEnum(Integer code) {
this.code = code;
}
- private static final List<Integer> ARRAYS = Arrays.stream(values())
- .map(UserTypeEnum::getCode)
+ private static final List<Integer> TYPE_CODE_LIST = Arrays.stream(values())
+ .map(TenantUserTypeEnum::getCode)
.collect(Collectors.toList());
- public static UserTypeEnum parseCode(Integer value) {
- return Arrays.stream(UserTypeEnum.class.getEnumConstants())
+ public static TenantUserTypeEnum parseCode(Integer value) {
+ return Arrays.stream(TenantUserTypeEnum.class.getEnumConstants())
.filter(x -> x.getCode().equals(value))
.findAny()
.orElse(null);
}
public static Integer parseName(String value) {
- for (UserTypeEnum type : UserTypeEnum.values()) {
+ for (TenantUserTypeEnum type : TenantUserTypeEnum.values()) {
if (type.name().equals(value)) {
return type.code;
}
@@ -74,7 +74,7 @@ public enum UserTypeEnum implements IntListValuable {
@Override
public List<Integer> valueList() {
- return ARRAYS;
+ return TYPE_CODE_LIST;
}
}
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongUserRoleEntity.java
similarity index 89%
copy from
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
copy to
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongUserRoleEntity.java
index 0dc41de9c..299dc42be 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongUserRoleEntity.java
@@ -22,17 +22,13 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
-/**
- * Role entity, including role code, role name, etc.
- */
@Data
-public class RoleEntity implements Serializable {
+public class InlongUserRoleEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
+ private String username;
private String roleCode;
- private String roleName;
-
private Integer disabled;
private Integer isDeleted;
private String creator;
@@ -40,5 +36,4 @@ public class RoleEntity implements Serializable {
private Date createTime;
private Date modifyTime;
private Integer version;
-
}
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/RoleEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongUserRoleEntityMapper.java
similarity index 67%
copy from
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/RoleEntityMapper.java
copy to
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongUserRoleEntityMapper.java
index a74cfcc43..8329140f3 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/RoleEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongUserRoleEntityMapper.java
@@ -17,19 +17,20 @@
package org.apache.inlong.manager.dao.mapper;
-import org.apache.inlong.manager.dao.entity.RoleEntity;
+import org.apache.inlong.manager.dao.entity.InlongUserRoleEntity;
+import org.apache.inlong.manager.pojo.user.InlongRolePageRequest;
+import com.github.pagehelper.Page;
import org.springframework.stereotype.Repository;
@Repository
-public interface RoleEntityMapper {
+public interface InlongUserRoleEntityMapper {
- int insert(RoleEntity record);
+ int insert(InlongUserRoleEntity record);
- RoleEntity selectById(Integer id);
+ InlongUserRoleEntity selectById(Integer id);
- int updateById(RoleEntity record);
-
- int deleteById(Integer id);
+ int updateById(InlongUserRoleEntity record);
+ Page<InlongUserRoleEntity> selectByCondition(InlongRolePageRequest
request);
}
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongUserRoleEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongUserRoleEntityMapper.xml
new file mode 100644
index 000000000..d97d526f7
--- /dev/null
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongUserRoleEntityMapper.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper
namespace="org.apache.inlong.manager.dao.mapper.InlongUserRoleEntityMapper">
+ <resultMap id="BaseResultMap"
type="org.apache.inlong.manager.dao.entity.InlongUserRoleEntity">
+ <id column="id" jdbcType="INTEGER" property="id"/>
+ <result column="user_name" jdbcType="VARCHAR" property="username"/>
+ <result column="role_code" jdbcType="VARCHAR" property="roleCode"/>
+ <result column="disabled" jdbcType="SMALLINT" property="disabled"/>
+ <result column="is_deleted" jdbcType="INTEGER" property="isDeleted"/>
+ <result column="creator" jdbcType="VARCHAR" property="creator"/>
+ <result column="modifier" jdbcType="VARCHAR" property="modifier"/>
+ <result column="create_time" jdbcType="TIMESTAMP"
property="createTime"/>
+ <result column="modify_time" jdbcType="TIMESTAMP"
property="modifyTime"/>
+ <result column="version" jdbcType="INTEGER" property="version"/>
+ </resultMap>
+ <sql id="Base_Column_List">
+ id, user_name, role_code, disabled, is_deleted, creator, modifier,
create_time, modify_time, version
+ </sql>
+
+ <insert id="insert" useGeneratedKeys="true" keyProperty="id"
+
parameterType="org.apache.inlong.manager.dao.entity.InlongUserRoleEntity">
+ insert into inlong_user_role (id, user_name, role_code,
+ disabled, creator, modifier)
+ values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR},
#{roleCode,jdbcType=VARCHAR},
+ #{disabled,jdbcType=SMALLINT}, #{creator,jdbcType=VARCHAR},
#{modifier,jdbcType=VARCHAR})
+ </insert>
+ <select id="selectById" parameterType="java.lang.Integer"
resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from inlong_user_role
+ where id = #{id,jdbcType=INTEGER}
+ </select>
+
+ <update id="updateById"
parameterType="org.apache.inlong.manager.dao.entity.InlongUserRoleEntity">
+ update inlong_user_role
+ set user_name = #{username,jdbcType=VARCHAR},
+ role_code = #{roleCode,jdbcType=VARCHAR},
+ disabled = #{disabled,jdbcType=SMALLINT},
+ is_deleted = #{isDeleted,jdbcType=INTEGER},
+ modifier = #{modifier,jdbcType=VARCHAR},
+ version = #{version,jdbcType=INTEGER} + 1
+ where id = #{id,jdbcType=INTEGER}
+ and version = #{version,jdbcType=INTEGER}
+ </update>
+
+ <delete id="deleteById" parameterType="java.lang.Integer">
+ delete
+ from inlong_user_role
+ where id = #{id,jdbcType=INTEGER}
+ </delete>
+
+ <select id="selectByCondition"
+
parameterType="org.apache.inlong.manager.pojo.user.InlongRolePageRequest"
+ resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from inlong_user_role
+ where
+ is_deleted = 0
+ <if test="username != null and username != ''">
+ and user_name = #{username, jdbcType=VARCHAR}
+ </if>
+ <if test="roleCode != null and roleCode != ''">
+ and role_code = #{roleCode,jdbcType=VARCHAR}
+ </if>
+ <if test="disabled != null">
+ and disabled = #{disabled, jdbcType=SMALLINT}
+ </if>
+ </select>
+</mapper>
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/RoleEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/RoleEntityMapper.xml
deleted file mode 100644
index 224906f06..000000000
--- a/inlong-manager/manager-dao/src/main/resources/mappers/RoleEntityMapper.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.inlong.manager.dao.mapper.RoleEntityMapper">
- <resultMap id="BaseResultMap"
type="org.apache.inlong.manager.dao.entity.RoleEntity">
- <id column="id" jdbcType="INTEGER" property="id"/>
- <result column="role_code" jdbcType="VARCHAR" property="roleCode"/>
- <result column="role_name" jdbcType="VARCHAR" property="roleName"/>
- <result column="disabled" jdbcType="SMALLINT" property="disabled"/>
- <result column="is_deleted" jdbcType="INTEGER" property="isDeleted"/>
- <result column="creator" jdbcType="VARCHAR" property="creator"/>
- <result column="modifier" jdbcType="VARCHAR" property="modifier"/>
- <result column="create_time" jdbcType="TIMESTAMP"
property="createTime"/>
- <result column="modify_time" jdbcType="TIMESTAMP"
property="modifyTime"/>
- <result column="version" jdbcType="INTEGER" property="version"/>
- </resultMap>
- <sql id="Base_Column_List">
- id, role_code, role_name, disabled, is_deleted, creator, modifier,
create_time, modify_time, version
- </sql>
-
- <insert id="insert" useGeneratedKeys="true" keyProperty="id"
- parameterType="org.apache.inlong.manager.dao.entity.RoleEntity">
- insert into role (id, role_code, role_name,
- disabled, creator, modifier)
- values (#{id,jdbcType=INTEGER}, #{roleCode,jdbcType=VARCHAR},
#{roleName,jdbcType=VARCHAR},
- #{disabled,jdbcType=SMALLINT}, #{creator,jdbcType=VARCHAR},
#{modifier,jdbcType=VARCHAR})
- </insert>
-
- <select id="selectById" parameterType="java.lang.Integer"
resultMap="BaseResultMap">
- select
- <include refid="Base_Column_List"/>
- from role
- where id = #{id,jdbcType=INTEGER}
- </select>
-
- <update id="updateById"
parameterType="org.apache.inlong.manager.dao.entity.RoleEntity">
- update role
- set role_code = #{roleCode,jdbcType=VARCHAR},
- role_name = #{roleName,jdbcType=VARCHAR},
- disabled = #{disabled,jdbcType=SMALLINT},
- is_deleted = #{isDeleted,jdbcType=INTEGER},
- modifier = #{modifier,jdbcType=VARCHAR},
- version = #{version,jdbcType=INTEGER} + 1
- where id = #{id,jdbcType=INTEGER}
- and version = #{version,jdbcType=INTEGER}
- </update>
-
- <delete id="deleteById" parameterType="java.lang.Integer">
- delete
- from role
- where id = #{id,jdbcType=INTEGER}
- </delete>
-</mapper>
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRoleInfo.java
similarity index 50%
copy from
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
copy to
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRoleInfo.java
index 0dc41de9c..797b10709 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRoleInfo.java
@@ -15,30 +15,55 @@
* limitations under the License.
*/
-package org.apache.inlong.manager.dao.entity;
+package org.apache.inlong.manager.pojo.user;
+import org.apache.inlong.manager.common.util.CommonBeanUtils;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
-import java.io.Serializable;
import java.util.Date;
-/**
- * Role entity, including role code, role name, etc.
- */
@Data
-public class RoleEntity implements Serializable {
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("Inlong user role info")
+public class InlongRoleInfo {
- private static final long serialVersionUID = 1L;
+ @ApiModelProperty(value = "Primary key")
private Integer id;
+
+ @ApiModelProperty(value = "User name")
+ private String username;
+
+ @ApiModelProperty(value = "Role code")
private String roleCode;
- private String roleName;
+ @ApiModelProperty(value = "If disabled")
private Integer disabled;
- private Integer isDeleted;
+
+ @ApiModelProperty(value = "Name of in creator")
private String creator;
+
+ @ApiModelProperty(value = "Name of in modifier")
private String modifier;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date modifyTime;
+
+ @ApiModelProperty(value = "Version number")
private Integer version;
+ public InlongRoleRequest genRequest() {
+ return CommonBeanUtils.copyProperties(this, InlongRoleRequest::new);
+ }
}
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRolePageRequest.java
similarity index 61%
copy from
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
copy to
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRolePageRequest.java
index 0dc41de9c..944c2e570 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRolePageRequest.java
@@ -15,30 +15,29 @@
* limitations under the License.
*/
-package org.apache.inlong.manager.dao.entity;
+package org.apache.inlong.manager.pojo.user;
-import lombok.Data;
+import org.apache.inlong.manager.pojo.common.PageRequest;
-import java.io.Serializable;
-import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
-/**
- * Role entity, including role code, role name, etc.
- */
@Data
-public class RoleEntity implements Serializable {
+@EqualsAndHashCode(callSuper = false)
+@ApiModel("Inlong user paging query request")
+public class InlongRolePageRequest extends PageRequest {
- private static final long serialVersionUID = 1L;
+ @ApiModelProperty(value = "Primary key")
private Integer id;
+
+ @ApiModelProperty(value = "User name")
+ private String username;
+
+ @ApiModelProperty(value = "Role code")
private String roleCode;
- private String roleName;
+ @ApiModelProperty(value = "If disabled")
private Integer disabled;
- private Integer isDeleted;
- private String creator;
- private String modifier;
- private Date createTime;
- private Date modifyTime;
- private Integer version;
-
}
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRoleRequest.java
similarity index 51%
rename from
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
rename to
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRoleRequest.java
index 0dc41de9c..8df05eea5 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/RoleEntity.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/InlongRoleRequest.java
@@ -15,30 +15,42 @@
* limitations under the License.
*/
-package org.apache.inlong.manager.dao.entity;
+package org.apache.inlong.manager.pojo.user;
+import org.apache.inlong.manager.common.util.CommonBeanUtils;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
-import java.io.Serializable;
-import java.util.Date;
+import javax.validation.constraints.NotBlank;
-/**
- * Role entity, including role code, role name, etc.
- */
@Data
-public class RoleEntity implements Serializable {
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("Inlong user role request")
+public class InlongRoleRequest {
- private static final long serialVersionUID = 1L;
+ @ApiModelProperty(value = "Primary key")
private Integer id;
+
+ @ApiModelProperty(value = "User name")
+ @NotBlank
+ private String username;
+
+ @ApiModelProperty(value = "Role code")
+ @NotBlank
private String roleCode;
- private String roleName;
-
- private Integer disabled;
- private Integer isDeleted;
- private String creator;
- private String modifier;
- private Date createTime;
- private Date modifyTime;
+
+ @ApiModelProperty(value = "If disabled")
+ private Integer disabled = 0;
+
+ @ApiModelProperty(value = "Version number")
private Integer version;
+ public InlongRoleRequest genRequest() {
+ return CommonBeanUtils.copyProperties(this, InlongRoleRequest::new);
+ }
}
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRequest.java
index b9aab755e..3dd22f812 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRequest.java
@@ -17,7 +17,7 @@
package org.apache.inlong.manager.pojo.user;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.validation.InEnumInt;
import org.apache.inlong.manager.common.validation.UpdateValidation;
import org.apache.inlong.manager.pojo.common.PageRequest;
@@ -82,7 +82,7 @@ public class UserRequest extends PageRequest {
private Integer encryptVersion;
@NotNull(message = "accountType cannot be null")
- @InEnumInt(UserTypeEnum.class)
+ @InEnumInt(TenantUserTypeEnum.class)
@ApiModelProperty(value = "Account type: 0 - manager, 1 - operator",
required = true)
@Range(min = 0, max = 1, message = "only supports [0: manager, 1:
operator]")
private Integer accountType;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRoleCode.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRoleCode.java
index 6966bd1c9..e591fab23 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRoleCode.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserRoleCode.java
@@ -19,10 +19,55 @@ package org.apache.inlong.manager.pojo.user;
/**
* User role code.
+ *
+ * The permission control model of inlong consists of tenant permission
control and the whole permission control.
+ *
+ * Assume that there are several resources belongs to tenant A, B and C.
+ * --------------------------------------------------------------
+ * | Tenant | A | B | C | inlong |
+ * -------------------------------------------------------------
+ * | Resources | r1, r2, r3 | r4, r5, r6 | r7, r8 | |
+ * -------------------------------------------------------------
+ * | Admin | Alice, Bob | Alice,Eve | Charlie | Dave |
+ * -------------------------------------------------------------
+ * | Operator | Charlie | Bob | Alice,Bob | Eve |
+ *--------------------------------------------------------------
+ * As the table shown above,
+ *
+ * Alice has all permission of tenant A and B, and she can do all
save/update/delete/get operation to resources
+ * r1-r3 in tenant A and r4-r6 in tenant B. Alice also the operator of tenant
C, hence she can look up r7 r8, but
+ * cannot do any modification.
+ *
+ * Bob has all permission to r1-r3, and can look up r4-r6
+ *
+ * Charlie has all permission to r7 r8, and can look up r1-r3.
+ *
+ * Dave is the admin of inlong, hence he can operate all resources r1-r8.
+ *
+ * Eve is the operator of inlong, hence she can look up all resources r1-r8,
+ * she also the admin of tenant B, hence she has all permission of r4-r6.
+ *
+ *
*/
public class UserRoleCode {
- public static final String ADMIN = "ADMIN";
- public static final String OPERATOR = "OPERATE";
+ /**
+ * Has all permission for the resources of a specific tenant
+ */
+ public static final String TENANT_ADMIN = "TENANT_ADMIN";
+ /**
+ * Has query permission for the resources of a specific tenant
+ */
+ public static final String TENANT_OPERATOR = "TENANT_OPERATOR";
+
+ /**
+ * Has all permission for all resources
+ */
+ public static final String INLONG_ADMIN = "INLONG_ADMIN";
+
+ /**
+ * Has query permission for all resources
+ */
+ public static final String INLONG_OPERATOR = "INLONG_OPERATOR";
}
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
index f19e7ad45..586ff4084 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
@@ -33,7 +33,7 @@ import org.apache.inlong.manager.common.enums.ClusterType;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
import org.apache.inlong.manager.common.enums.GroupStatus;
import org.apache.inlong.manager.common.enums.NodeStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.CommonBeanUtils;
import org.apache.inlong.manager.common.util.Preconditions;
@@ -212,7 +212,7 @@ public class InlongClusterServiceImpl implements
InlongClusterService {
if (CollectionUtils.isNotEmpty(clusterTagEntities)) {
for (InlongClusterTagEntity tagEntity : clusterTagEntities) {
// only the person in charges can query
- if
(!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
List<String> inCharges =
Arrays.asList(tagEntity.getInCharges().split(InlongConstants.COMMA));
if (!inCharges.contains(opInfo.getName())) {
continue;
@@ -525,7 +525,7 @@ public class InlongClusterServiceImpl implements
InlongClusterService {
List<InlongClusterEntity> filterResult = new ArrayList<>();
for (InlongClusterEntity entity : clusterEntities) {
// only the person in charges can query
- if (!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode()))
{
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
List<String> inCharges =
Arrays.asList(entity.getInCharges().split(InlongConstants.COMMA));
if (!inCharges.contains(opInfo.getName())) {
continue;
@@ -937,7 +937,7 @@ public class InlongClusterServiceImpl implements
InlongClusterService {
clusterMapper.selectByKey(request.getClusterTag(),
request.getName(), request.getType());
for (InlongClusterEntity cluster : clusterList) {
// only the person in charges can query
- if
(!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
List<String> inCharges =
Arrays.asList(cluster.getInCharges().split(InlongConstants.COMMA));
if (!inCharges.contains(opInfo.getName())) {
continue;
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AuditServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AuditServiceImpl.java
index 2ac77f353..eb2fa1537 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AuditServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AuditServiceImpl.java
@@ -255,7 +255,7 @@ public class AuditServiceImpl implements AuditService {
}
private List<String> getAuditIds(String groupId, String streamId, String
sinkNodeType) {
- Set<String> auditSet =
LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN)
+ Set<String> auditSet =
LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.TENANT_ADMIN)
? new HashSet<>(auditIdListForAdmin)
: new HashSet<>(auditIdListForUser);
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/GroupCheckService.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/GroupCheckService.java
index e2bbd5731..de9efdf4f 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/GroupCheckService.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/GroupCheckService.java
@@ -19,7 +19,7 @@ package org.apache.inlong.manager.service.group;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
import org.apache.inlong.manager.common.enums.GroupStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.dao.entity.InlongGroupEntity;
@@ -59,7 +59,8 @@ public class GroupCheckService {
UserEntity userEntity = userMapper.selectByName(operator);
List<String> managers =
Arrays.asList(inlongGroupEntity.getInCharges().split(","));
Preconditions.expectTrue(
- managers.contains(operator) ||
UserTypeEnum.ADMIN.getCode().equals(userEntity.getAccountType()),
+ managers.contains(operator)
+ ||
TenantUserTypeEnum.TENANT_ADMIN.getCode().equals(userEntity.getAccountType()),
String.format(ErrorCodeEnum.USER_IS_NOT_MANAGER.getMessage(),
operator, managers));
GroupStatus status =
GroupStatus.forCode(inlongGroupEntity.getStatus());
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
index 520080d30..172ed6f19 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
@@ -23,7 +23,7 @@ import
org.apache.inlong.manager.common.enums.GroupOperateType;
import org.apache.inlong.manager.common.enums.GroupStatus;
import org.apache.inlong.manager.common.enums.ProcessName;
import org.apache.inlong.manager.common.enums.TaskStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.exceptions.WorkflowListenerException;
import org.apache.inlong.manager.common.util.Preconditions;
@@ -250,7 +250,7 @@ public class InlongGroupProcessService {
InlongGroupEntity entity = groupMapper.selectByGroupId(groupId);
Preconditions.expectNotNull(entity, ErrorCodeEnum.GROUP_NOT_FOUND,
ErrorCodeEnum.GROUP_NOT_FOUND.getMessage());
// only the person in charges can delete
- if (!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
List<String> inCharges =
Arrays.asList(entity.getInCharges().split(InlongConstants.COMMA));
if (!inCharges.contains(opInfo.getName())) {
throw new
BusinessException(ErrorCodeEnum.GROUP_PERMISSION_DENIED);
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
index 4c51b7210..0d7d4126e 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
@@ -22,7 +22,7 @@ import
org.apache.inlong.manager.common.auth.SecretTokenAuthentication;
import org.apache.inlong.manager.common.consts.InlongConstants;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
import org.apache.inlong.manager.common.enums.GroupStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.CommonBeanUtils;
import org.apache.inlong.manager.common.util.JsonUtils;
@@ -359,7 +359,7 @@ public class InlongGroupServiceImpl implements
InlongGroupService {
OrderTypeEnum.checkOrderType(request);
for (InlongGroupEntity groupEntity :
groupMapper.selectByCondition(request)) {
// only the person in charges can query
- if (!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode()))
{
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
List<String> inCharges =
Arrays.asList(groupEntity.getInCharges().split(InlongConstants.COMMA));
if (!inCharges.contains(opInfo.getName())) {
continue;
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
index 10c25dca0..26de8453c 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
@@ -19,7 +19,7 @@ package org.apache.inlong.manager.service.node;
import org.apache.inlong.manager.common.consts.InlongConstants;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.dao.entity.DataNodeEntity;
@@ -94,7 +94,7 @@ public class DataNodeServiceImpl implements DataNodeService {
}
// only the person in charges can query
- if (!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
throw new BusinessException(ErrorCodeEnum.PERMISSION_REQUIRED);
}
// check if data node already exist
@@ -174,7 +174,7 @@ public class DataNodeServiceImpl implements DataNodeService
{
@Override
public List<DataNodeInfo> list(DataNodePageRequest request, UserInfo
opInfo) {
request.setCurrentUser(opInfo.getName());
-
request.setIsAdminRole(opInfo.getRoles().contains(UserTypeEnum.ADMIN.name()));
+
request.setIsAdminRole(opInfo.getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
// query result
List<DataNodeEntity> nodeEntities =
dataNodeMapper.selectByCondition(request);
return nodeEntities.stream()
@@ -223,7 +223,7 @@ public class DataNodeServiceImpl implements DataNodeService
{
@Transactional(rollbackFor = Throwable.class)
public Boolean update(DataNodeRequest request, UserInfo opInfo) {
// only the person in charges can query
- if (!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
throw new BusinessException(ErrorCodeEnum.PERMISSION_REQUIRED);
}
// check the record existed
@@ -291,7 +291,7 @@ public class DataNodeServiceImpl implements DataNodeService
{
@Override
public Boolean delete(Integer id, UserInfo opInfo) {
// only the person in charges can query
- if (!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
throw new BusinessException(ErrorCodeEnum.PERMISSION_REQUIRED);
}
DataNodeEntity entity = dataNodeMapper.selectById(id);
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
index 927d9cb24..e6036a33f 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
@@ -22,7 +22,7 @@ import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
import org.apache.inlong.manager.common.enums.GroupStatus;
import org.apache.inlong.manager.common.enums.SinkStatus;
import org.apache.inlong.manager.common.enums.StreamStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.dao.entity.InlongGroupEntity;
@@ -319,7 +319,7 @@ public class StreamSinkServiceImpl implements
StreamSinkService {
public PageResult<? extends StreamSink> listByCondition(SinkPageRequest
request, String operator) {
Preconditions.expectNotBlank(request.getInlongGroupId(),
ErrorCodeEnum.GROUP_ID_IS_EMPTY);
UserInfo userInfo = userService.getByName(operator);
- boolean isAdmin =
UserTypeEnum.ADMIN.getCode().equals(userInfo.getAccountType());
+ boolean isAdmin =
TenantUserTypeEnum.TENANT_ADMIN.getCode().equals(userInfo.getAccountType());
PageHelper.startPage(request.getPageNum(), request.getPageSize());
OrderFieldEnum.checkOrderField(request);
OrderTypeEnum.checkOrderType(request);
@@ -379,7 +379,7 @@ public class StreamSinkServiceImpl implements
StreamSinkService {
continue;
}
// only the person in charges can query
- if
(!opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(!opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
List<String> inCharges =
Arrays.asList(groupEntity.getInCharges().split(InlongConstants.COMMA));
if (!inCharges.contains(opInfo.getName())) {
continue;
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
index ab1441c5b..8dc61b262 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
@@ -22,7 +22,7 @@ import org.apache.inlong.manager.common.consts.SourceType;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
import org.apache.inlong.manager.common.enums.GroupStatus;
import org.apache.inlong.manager.common.enums.SourceStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.CommonBeanUtils;
import org.apache.inlong.manager.common.util.Preconditions;
@@ -286,7 +286,7 @@ public class StreamSourceServiceImpl implements
StreamSourceService {
OrderTypeEnum.checkOrderType(request);
List<StreamSourceEntity> entityList =
sourceMapper.selectByCondition(request);
List<StreamSourceEntity> filteredEntitys = Lists.newArrayList();
- if (opInfo.getAccountType().equals(UserTypeEnum.ADMIN.getCode())) {
+ if
(opInfo.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode())) {
filteredEntitys.addAll(entityList);
} else {
Set<String> totalGroupIds = new HashSet<>();
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
index 1c6fe4c49..e91e2fc98 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
@@ -342,7 +342,7 @@ public class InlongStreamServiceImpl implements
InlongStreamService {
@Override
public List<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest
request, UserInfo opInfo) {
request.setCurrentUser(opInfo.getName());
- request.setIsAdminRole(opInfo.getRoles().contains(UserRoleCode.ADMIN));
+
request.setIsAdminRole(opInfo.getRoles().contains(UserRoleCode.TENANT_ADMIN));
OrderFieldEnum.checkOrderField(request);
OrderTypeEnum.checkOrderType(request);
return
CommonBeanUtils.copyListProperties(streamMapper.selectByCondition(request),
InlongStreamBriefInfo::new);
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/RoleEntityMapper.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/InlongRoleService.java
similarity index 59%
rename from
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/RoleEntityMapper.java
rename to
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/InlongRoleService.java
index a74cfcc43..e9e98bfaa 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/RoleEntityMapper.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/InlongRoleService.java
@@ -15,21 +15,21 @@
* limitations under the License.
*/
-package org.apache.inlong.manager.dao.mapper;
+package org.apache.inlong.manager.service.user;
-import org.apache.inlong.manager.dao.entity.RoleEntity;
+import org.apache.inlong.manager.pojo.user.InlongRoleInfo;
+import org.apache.inlong.manager.pojo.user.InlongRolePageRequest;
+import org.apache.inlong.manager.pojo.user.InlongRoleRequest;
-import org.springframework.stereotype.Repository;
+import com.github.pagehelper.PageInfo;
-@Repository
-public interface RoleEntityMapper {
+public interface InlongRoleService {
- int insert(RoleEntity record);
+ PageInfo<InlongRoleInfo> listByCondition(InlongRolePageRequest request);
- RoleEntity selectById(Integer id);
+ int save(InlongRoleRequest request, String operator);
- int updateById(RoleEntity record);
-
- int deleteById(Integer id);
+ boolean update(InlongRoleRequest request, String operator);
+ InlongRoleInfo get(int id);
}
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/InlongRoleServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/InlongRoleServiceImpl.java
new file mode 100644
index 000000000..8be93f11e
--- /dev/null
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/InlongRoleServiceImpl.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.service.user;
+
+import org.apache.inlong.manager.common.consts.InlongConstants;
+import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
+import org.apache.inlong.manager.common.exceptions.BusinessException;
+import org.apache.inlong.manager.common.util.CommonBeanUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.dao.entity.InlongUserRoleEntity;
+import org.apache.inlong.manager.dao.mapper.InlongUserRoleEntityMapper;
+import org.apache.inlong.manager.pojo.user.InlongRoleInfo;
+import org.apache.inlong.manager.pojo.user.InlongRolePageRequest;
+import org.apache.inlong.manager.pojo.user.InlongRoleRequest;
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InlongRoleServiceImpl implements InlongRoleService {
+
+ @Autowired
+ private InlongUserRoleEntityMapper inlongUserMapper;
+
+ @Override
+ public PageInfo<InlongRoleInfo> listByCondition(InlongRolePageRequest
request) {
+ PageHelper.startPage(request.getPageNum(), request.getPageSize());
+ Page<InlongUserRoleEntity> entityPage =
inlongUserMapper.selectByCondition(request);
+ return entityPage.toPageInfo(entity ->
CommonBeanUtils.copyProperties(entity, InlongRoleInfo::new));
+ }
+
+ @Override
+ public int save(InlongRoleRequest request, String operator) {
+ String username = request.getUsername();
+ Preconditions.expectNotBlank(username, "Failed to save inlong user
role, user should not be blank");
+ Preconditions.expectNotBlank(request.getRoleCode(),
+ "Failed to save inlong user role, role code should not be
blank");
+
+ InlongUserRoleEntity entity = CommonBeanUtils.copyProperties(request,
InlongUserRoleEntity::new);
+ entity.setCreator(operator);
+ entity.setModifier(operator);
+ inlongUserMapper.insert(entity);
+ return entity.getId();
+ }
+
+ @Override
+ public boolean update(InlongRoleRequest request, String operator) {
+ InlongUserRoleEntity exist =
inlongUserMapper.selectById(request.getId());
+ Preconditions.expectNotNull(exist, ErrorCodeEnum.RECORD_NOT_FOUND,
+ String.format("inlong user role record not found by id=%s",
request.getId()));
+
+ InlongUserRoleEntity entity = CommonBeanUtils.copyProperties(request,
InlongUserRoleEntity::new);
+ entity.setModifier(operator);
+ int rowCount = inlongUserMapper.updateById(entity);
+ if (rowCount != InlongConstants.AFFECTED_ONE_ROW) {
+ throw new BusinessException(ErrorCodeEnum.CONFIG_EXPIRED,
+ String.format(
+ "failure to update inlong user role with id=%d,
request version=%d, updated row=%d",
+ request.getId(), request.getVersion(), rowCount));
+ }
+ return true;
+ }
+
+ @Override
+ public InlongRoleInfo get(int id) {
+ InlongUserRoleEntity entity = inlongUserMapper.selectById(id);
+ return CommonBeanUtils.copyProperties(entity, InlongRoleInfo::new);
+ }
+}
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
index 12823d5a2..424f7a444 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
@@ -19,7 +19,7 @@ package org.apache.inlong.manager.service.user;
import org.apache.inlong.manager.common.consts.InlongConstants;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.AESUtils;
import org.apache.inlong.manager.common.util.CommonBeanUtils;
@@ -156,7 +156,7 @@ public class UserServiceImpl implements UserService {
UserEntity entity = userMapper.selectById(userId);
Preconditions.expectNotNull(entity, "User not exists with id " +
userId);
UserEntity curUser = userMapper.selectByName(currentUser);
- Preconditions.expectTrue(Objects.equals(UserTypeEnum.ADMIN.getCode(),
curUser.getAccountType())
+
Preconditions.expectTrue(Objects.equals(TenantUserTypeEnum.TENANT_ADMIN.getCode(),
curUser.getAccountType())
|| Objects.equals(entity.getName(), currentUser),
"Current user does not have permission to get other users'
info");
@@ -224,13 +224,13 @@ public class UserServiceImpl implements UserService {
// Whether the current user is a manager
UserEntity currentUserEntity = userMapper.selectByName(currentUser);
String updateName = request.getName();
- boolean isAdmin = Objects.equals(UserTypeEnum.ADMIN.getCode(),
currentUserEntity.getAccountType());
+ boolean isAdmin =
Objects.equals(TenantUserTypeEnum.TENANT_ADMIN.getCode(),
currentUserEntity.getAccountType());
Preconditions.expectTrue(isAdmin || Objects.equals(updateName,
currentUser),
"You are not a manager and do not have permission to update
other users");
// manager cannot set himself as an ordinary
boolean managerToOrdinary = isAdmin
- && Objects.equals(UserTypeEnum.OPERATOR.getCode(),
request.getAccountType())
+ &&
Objects.equals(TenantUserTypeEnum.TENANT_OPERATOR.getCode(),
request.getAccountType())
&& Objects.equals(currentUser, updateName);
Preconditions.expectFalse(managerToOrdinary, "You are a manager and
you cannot change to an ordinary user");
@@ -287,7 +287,7 @@ public class UserServiceImpl implements UserService {
// Whether the current user is an administrator
UserEntity curUser = userMapper.selectByName(currentUser);
UserEntity entity = userMapper.selectById(userId);
-
Preconditions.expectTrue(curUser.getAccountType().equals(UserTypeEnum.ADMIN.getCode()),
+
Preconditions.expectTrue(curUser.getAccountType().equals(TenantUserTypeEnum.TENANT_ADMIN.getCode()),
"Current user is not a manager and does not have permission to
delete users");
Preconditions.expectTrue(!Objects.equals(entity.getName(),
currentUser),
"Current user does not have permission to delete himself");
@@ -351,7 +351,8 @@ public class UserServiceImpl implements UserService {
public void checkUser(String inCharges, String user, String errMsg) {
UserEntity userEntity = userMapper.selectByName(user);
boolean isInCharge = Preconditions.inSeparatedString(user, inCharges,
InlongConstants.COMMA);
- Preconditions.expectTrue(isInCharge ||
UserTypeEnum.ADMIN.getCode().equals(userEntity.getAccountType()),
+ Preconditions.expectTrue(
+ isInCharge ||
TenantUserTypeEnum.TENANT_ADMIN.getCode().equals(userEntity.getAccountType()),
errMsg);
}
diff --git
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/InlongRoleServiceTest.java
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/InlongRoleServiceTest.java
new file mode 100644
index 000000000..376d0a1db
--- /dev/null
+++
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/InlongRoleServiceTest.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.service.user;
+
+import org.apache.inlong.manager.pojo.user.InlongRoleInfo;
+import org.apache.inlong.manager.pojo.user.InlongRolePageRequest;
+import org.apache.inlong.manager.pojo.user.InlongRoleRequest;
+import org.apache.inlong.manager.pojo.user.UserInfo;
+import org.apache.inlong.manager.pojo.user.UserRoleCode;
+import org.apache.inlong.manager.service.ServiceBaseTest;
+
+import com.github.pagehelper.PageInfo;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+class InlongRoleServiceTest extends ServiceBaseTest {
+
+ @Autowired
+ private InlongRoleService inlongRoleService;
+
+ @BeforeAll
+ public static void initUser() {
+ UserInfo userInfo = new UserInfo();
+ userInfo.setName("admin");
+ LoginUserUtils.setUserLoginInfo(userInfo);
+ }
+
+ @Test
+ @Order(1)
+ public void testSave() {
+ InlongRoleRequest request = new InlongRoleRequest();
+ request.setUsername("new admin");
+ request.setRoleCode(UserRoleCode.INLONG_ADMIN);
+ int id = inlongRoleService.save(request,
LoginUserUtils.getLoginUser().getName());
+ InlongRoleInfo info = inlongRoleService.get(id);
+ Assertions.assertEquals(request.getRoleCode(), info.getRoleCode());
+ Assertions.assertEquals(request.getUsername(), info.getUsername());
+ }
+
+ @Test
+ @Order(2)
+ public void testUpdate() {
+ InlongRoleRequest request = new InlongRoleRequest();
+ request.setUsername("admin2");
+ request.setRoleCode(UserRoleCode.INLONG_ADMIN);
+ int id = inlongRoleService.save(request,
LoginUserUtils.getLoginUser().getName());
+ InlongRoleInfo info = inlongRoleService.get(id);
+ info.setRoleCode(UserRoleCode.INLONG_OPERATOR);
+ inlongRoleService.update(info.genRequest(),
LoginUserUtils.getLoginUser().getName());
+ InlongRoleInfo updatedInfo = inlongRoleService.get(id);
+ Assertions.assertEquals(UserRoleCode.INLONG_OPERATOR,
updatedInfo.getRoleCode());
+ }
+
+ @Test
+ @Order(3)
+ public void testList() {
+ int max = 6;
+ InlongRoleRequest request = new InlongRoleRequest();
+ request.setRoleCode(UserRoleCode.INLONG_OPERATOR);
+ for (int i = 0; i < max; i++) {
+ request.setUsername("test" + i);
+ inlongRoleService.save(request,
LoginUserUtils.getLoginUser().getName());
+ }
+ InlongRolePageRequest pageRequest = new InlongRolePageRequest();
+ pageRequest.setRoleCode(UserRoleCode.INLONG_OPERATOR);
+ PageInfo<InlongRoleInfo> infos =
inlongRoleService.listByCondition(pageRequest);
+ Assertions.assertEquals(max, infos.getSize());
+
+ pageRequest.setRoleCode(UserRoleCode.INLONG_ADMIN);
+ infos = inlongRoleService.listByCondition(pageRequest);
+ Assertions.assertEquals(1, infos.getSize());
+ }
+}
\ No newline at end of file
diff --git
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/TenantRoleServiceTest.java
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/TenantRoleServiceTest.java
index 9487868f9..63f30a1ad 100644
---
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/TenantRoleServiceTest.java
+++
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/user/TenantRoleServiceTest.java
@@ -51,7 +51,7 @@ public class TenantRoleServiceTest extends ServiceBaseTest {
public void testSaveWithoutTenant() {
TenantRoleRequest request = new TenantRoleRequest();
request.setTenant("not exist tenant");
- request.setRoleCode(UserRoleCode.ADMIN);
+ request.setRoleCode(UserRoleCode.TENANT_ADMIN);
request.setUsername(LoginUserUtils.getLoginUser().getName());
int code = -1;
try {
@@ -68,7 +68,7 @@ public class TenantRoleServiceTest extends ServiceBaseTest {
TenantRoleRequest request = new TenantRoleRequest();
request.setTenant("public");
request.setUsername(LoginUserUtils.getLoginUser().getName());
- request.setRoleCode(UserRoleCode.ADMIN);
+ request.setRoleCode(UserRoleCode.TENANT_ADMIN);
int id = service.save(request,
LoginUserUtils.getLoginUser().getName());
TenantRoleInfo info = service.get(id);
Assertions.assertEquals(request.getTenant(), info.getTenant());
@@ -83,13 +83,13 @@ public class TenantRoleServiceTest extends ServiceBaseTest {
TenantRoleRequest request = new TenantRoleRequest();
request.setTenant("public");
request.setUsername(newUser);
- request.setRoleCode(UserRoleCode.ADMIN);
+ request.setRoleCode(UserRoleCode.TENANT_ADMIN);
int id = service.save(request,
LoginUserUtils.getLoginUser().getName());
TenantRoleInfo oldInfo = service.get(id);
- oldInfo.setRoleCode(UserRoleCode.OPERATOR);
+ oldInfo.setRoleCode(UserRoleCode.TENANT_OPERATOR);
service.update(oldInfo.genRequest(),
LoginUserUtils.getLoginUser().getName());
TenantRoleInfo newInfo = service.get(id);
- Assertions.assertEquals(UserRoleCode.OPERATOR, newInfo.getRoleCode());
+ Assertions.assertEquals(UserRoleCode.TENANT_OPERATOR,
newInfo.getRoleCode());
}
@Test
@@ -98,7 +98,7 @@ public class TenantRoleServiceTest extends ServiceBaseTest {
int max = 5;
TenantRoleRequest request = new TenantRoleRequest();
request.setTenant("public");
- request.setRoleCode(UserRoleCode.OPERATOR);
+ request.setRoleCode(UserRoleCode.TENANT_OPERATOR);
for (int i = 0; i < max; i++) {
request.setUsername("testName" + i);
service.save(request, LoginUserUtils.getLoginUser().getName());
diff --git
a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
index 562986fd5..8dd5bbd37 100644
---
a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
+++
b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
@@ -529,7 +529,7 @@ CREATE TABLE IF NOT EXISTS `role`
);
-- ----------------------------
--- Table structure for user_role
+-- Table structure for tenant user_role
-- ----------------------------
CREATE TABLE IF NOT EXISTS `tenant_user_role`
(
@@ -549,6 +549,28 @@ CREATE TABLE IF NOT EXISTS `tenant_user_role`
INDEX `index_tenant` (`tenant`, `is_deleted`)
);
+-- ----------------------------
+-- Table structure for inlong_user_role
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `inlong_user_role`
+(
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(256) NOT NULL COMMENT 'Username',
+ `role_code` varchar(256) NOT NULL COMMENT 'User role code',
+ `disabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether to
disabled, 0: enabled, 1: disabled',
+ `is_deleted` int(11) DEFAULT '0' COMMENT 'Whether to
delete, 0 is not deleted, if greater than 0, delete',
+ `creator` varchar(256) NOT NULL COMMENT 'Creator name',
+ `modifier` varchar(256) DEFAULT NULL COMMENT 'Modifier name',
+ `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT
'Create time',
+ `modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT 'Modify time',
+ `version` int(11) NOT NULL DEFAULT '1' COMMENT 'Version number,
which will be incremented by 1 after modification',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `unique_inlong_user_role` (`user_name`, `role_code`,
`is_deleted`)
+);
+
+INSERT INTO `inlong_user_role` (`user_name`, `role_code`, `creator`)
+VALUES ('admin', 'INLONG_ADMIN', 'inlong_init');
+
-- ----------------------------
-- Table structure for workflow_approver
-- ----------------------------
diff --git a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
index 3573569c3..580d33b7b 100644
--- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
+++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
@@ -583,6 +583,29 @@ CREATE TABLE IF NOT EXISTS `tenant_user_role`
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='Tenant User Role Table';
+-- ----------------------------
+-- Table structure for inlong_user_role
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `inlong_user_role`
+(
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(256) NOT NULL COMMENT 'Username',
+ `role_code` varchar(256) NOT NULL COMMENT 'User role code',
+ `disabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether to
disabled, 0: enabled, 1: disabled',
+ `is_deleted` int(11) DEFAULT '0' COMMENT 'Whether to
delete, 0 is not deleted, if greater than 0, delete',
+ `creator` varchar(256) NOT NULL COMMENT 'Creator name',
+ `modifier` varchar(256) DEFAULT NULL COMMENT 'Modifier name',
+ `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT
'Create time',
+ `modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT 'Modify time',
+ `version` int(11) NOT NULL DEFAULT '1' COMMENT 'Version number,
which will be incremented by 1 after modification',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `unique_inlong_user_role` (`user_name`, `role_code`,
`is_deleted`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='Inlong User Role Table';
+
+INSERT INTO `inlong_user_role` (`user_name`, `role_code`, `creator`)
+VALUES ('admin', 'INLONG_ADMIN', 'inlong_init');
+
-- ----------------------------
-- Table structure for workflow_approver
-- ----------------------------
diff --git a/inlong-manager/manager-web/sql/changes-1.8.0.sql
b/inlong-manager/manager-web/sql/changes-1.8.0.sql
index 86e708c20..08b005b88 100644
--- a/inlong-manager/manager-web/sql/changes-1.8.0.sql
+++ b/inlong-manager/manager-web/sql/changes-1.8.0.sql
@@ -46,12 +46,32 @@ CREATE TABLE IF NOT EXISTS `inlong_tenant`
INSERT INTO `inlong_tenant`(`name`, `description`, `creator`, `modifier`)
VALUES ('public', 'Default tenant', 'inlong_init', 'inlong_init');
--- To support distinguish inlong user permission and tenant permission
control, please see https://github.com/apache/inlong/issues/8118
+-- To support distinguish inlong user permission and tenant permission
control, please see https://github.com/apache/inlong/issues/8098
+CREATE TABLE IF NOT EXISTS `inlong_user_role`
+(
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(256) NOT NULL COMMENT 'Username',
+ `role_code` varchar(256) NOT NULL COMMENT 'User role code',
+ `disabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether to
disabled, 0: enabled, 1: disabled',
+ `is_deleted` int(11) DEFAULT '0' COMMENT 'Whether to
delete, 0 is not deleted, if greater than 0, delete',
+ `creator` varchar(256) NOT NULL COMMENT 'Creator name',
+ `modifier` varchar(256) DEFAULT NULL COMMENT 'Modifier name',
+ `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT
'Create time',
+ `modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT 'Modify time',
+ `version` int(11) NOT NULL DEFAULT '1' COMMENT 'Version number,
which will be incremented by 1 after modification',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `unique_inlong_user_role` (`user_name`, `role_code`,
`is_deleted`)
+ ) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='Inlong User Role Table';
+
+INSERT INTO `inlong_user_role` (`user_name`, `role_code`, `creator`)
+VALUES ('admin', 'INLONG_ADMIN', 'inlong_init');
+
RENAME TABLE user_role TO tenant_user_role;
ALTER TABLE tenant_user_role
ADD tenant VARCHAR(256) DEFAULT 'public' NOT NULL comment 'User tenant';
ALTER TABLE tenant_user_role
ADD CONSTRAINT unique_tenant_user
UNIQUE (user_name, tenant, is_deleted);
-CREATE INDEX tenant_user_role
- ON user_role (tenant);
+CREATE INDEX index_tenant
+ ON tenant_user_role (tenant, is_deleted);
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/openapi/OpenAPIAuthenticatingRealm.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/openapi/OpenAPIAuthenticatingRealm.java
index 063e64216..4e65e2c2b 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/openapi/OpenAPIAuthenticatingRealm.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/openapi/OpenAPIAuthenticatingRealm.java
@@ -17,7 +17,7 @@
package org.apache.inlong.manager.web.auth.openapi;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.AESUtils;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.pojo.user.UserInfo;
@@ -60,8 +60,8 @@ public class OpenAPIAuthenticatingRealm extends
AuthenticatingRealm {
String secretKey = new String(
AESUtils.decryptAsString(userInfo.getSecretKey(),
userInfo.getEncryptVersion()));
userInfo.setRoles(Sets.newHashSet(userInfo.getAccountType() == 0
- ? UserTypeEnum.ADMIN.name()
- : UserTypeEnum.OPERATOR.name()));
+ ? TenantUserTypeEnum.TENANT_ADMIN.name()
+ : TenantUserTypeEnum.TENANT_OPERATOR.name()));
return new SimpleAuthenticationInfo(userInfo, secretKey,
getName());
} catch (Exception e) {
log.error("decrypt secret key fail: ", e);
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/web/WebAuthorizingRealm.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/web/WebAuthorizingRealm.java
index 1c263388e..08aff0e5c 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/web/WebAuthorizingRealm.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/auth/web/WebAuthorizingRealm.java
@@ -17,7 +17,7 @@
package org.apache.inlong.manager.web.auth.web;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.pojo.user.UserInfo;
import org.apache.inlong.manager.service.user.UserService;
@@ -57,8 +57,8 @@ public class WebAuthorizingRealm extends AuthorizingRealm {
Preconditions.expectNotNull(userInfo, "User not exist with name=" +
username);
Preconditions.expectTrue(userInfo.getDueDate().after(new Date()),
"User " + username + " was expired");
userInfo.setRoles(Sets.newHashSet(userInfo.getAccountType() == 0
- ? UserTypeEnum.ADMIN.name()
- : UserTypeEnum.OPERATOR.name()));
+ ? TenantUserTypeEnum.TENANT_ADMIN.name()
+ : TenantUserTypeEnum.TENANT_OPERATOR.name()));
return new SimpleAuthenticationInfo(userInfo, userInfo.getPassword(),
getName());
}
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/AnnoController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/AnnoController.java
index de15893c4..77e2147de 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/AnnoController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/AnnoController.java
@@ -55,7 +55,7 @@ public class AnnoController {
}
@PostMapping("/anno/register")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> register(@Validated @RequestBody UserRequest
request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(userService.save(request, currentUser));
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
index be4a1b891..31664b675 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
@@ -18,7 +18,7 @@
package org.apache.inlong.manager.web.controller;
import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.validation.SaveValidation;
import org.apache.inlong.manager.common.validation.UpdateByIdValidation;
import org.apache.inlong.manager.common.validation.UpdateByKeyValidation;
@@ -63,7 +63,7 @@ public class DataNodeController {
@PostMapping(value = "/node/save")
@ApiOperation(value = "Save node")
@OperationLog(operation = OperationType.CREATE)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> save(@Validated(SaveValidation.class)
@RequestBody DataNodeRequest request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(dataNodeService.save(request, currentUser));
@@ -81,7 +81,8 @@ public class DataNodeController {
@ApiOperation(value = "List data node")
public Response<PageResult<DataNodeInfo>> list(@RequestBody
DataNodePageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
+ request.setIsAdminRole(
+
LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
return Response.success(dataNodeService.list(request));
}
@@ -106,7 +107,7 @@ public class DataNodeController {
@ApiOperation(value = "Delete data node by id")
@OperationLog(operation = OperationType.DELETE)
@ApiImplicitParam(name = "id", value = "Data node ID", dataTypeClass =
Integer.class, required = true)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> delete(@PathVariable Integer id) {
return Response.success(dataNodeService.delete(id,
LoginUserUtils.getLoginUser().getName()));
}
@@ -118,7 +119,7 @@ public class DataNodeController {
@ApiImplicitParam(name = "name", value = "Data node name",
dataTypeClass = String.class, required = true),
@ApiImplicitParam(name = "type", value = "Data node type",
dataTypeClass = String.class, required = true)
})
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> deleteByKey(@RequestParam String name,
@RequestParam String type) {
return Response.success(dataNodeService.deleteByKey(name, type,
LoginUserUtils.getLoginUser().getName()));
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 e6e661f45..3c65557db 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
@@ -18,7 +18,7 @@
package org.apache.inlong.manager.web.controller;
import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.validation.SaveValidation;
import org.apache.inlong.manager.common.validation.UpdateByIdValidation;
import org.apache.inlong.manager.common.validation.UpdateByKeyValidation;
@@ -73,7 +73,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/tag/save")
@ApiOperation(value = "Save cluster tag")
@OperationLog(operation = OperationType.CREATE)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> saveTag(@Validated(SaveValidation.class)
@RequestBody ClusterTagRequest request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.saveTag(request, currentUser));
@@ -91,7 +91,8 @@ public class InlongClusterController {
@ApiOperation(value = "List cluster tags")
public Response<PageResult<ClusterTagResponse>> listTag(@RequestBody
ClusterTagPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
+ request.setIsAdminRole(
+
LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
return Response.success(clusterService.listTag(request));
}
@@ -107,7 +108,7 @@ public class InlongClusterController {
@ApiOperation(value = "Delete cluster tag by id")
@OperationLog(operation = OperationType.DELETE)
@ApiImplicitParam(name = "id", value = "Cluster tag ID", dataTypeClass =
Integer.class, required = true)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> deleteTag(@PathVariable Integer id) {
return Response.success(clusterService.deleteTag(id,
LoginUserUtils.getLoginUser().getName()));
}
@@ -115,7 +116,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/save")
@ApiOperation(value = "Save cluster")
@OperationLog(operation = OperationType.CREATE)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> save(@Validated(SaveValidation.class)
@RequestBody ClusterRequest request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.save(request, currentUser));
@@ -133,7 +134,8 @@ public class InlongClusterController {
@ApiOperation(value = "List clusters")
public Response<PageResult<ClusterInfo>> list(@RequestBody
ClusterPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
+ request.setIsAdminRole(
+
LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
return Response.success(clusterService.list(request));
}
@@ -166,7 +168,7 @@ public class InlongClusterController {
@ApiOperation(value = "Delete cluster by id")
@OperationLog(operation = OperationType.DELETE)
@ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass =
Integer.class, required = true)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> delete(@PathVariable Integer id) {
return Response.success(clusterService.delete(id,
LoginUserUtils.getLoginUser().getName()));
}
@@ -178,7 +180,7 @@ public class InlongClusterController {
@ApiImplicitParam(name = "name", value = "Cluster name",
dataTypeClass = String.class, required = true),
@ApiImplicitParam(name = "type", value = "Cluster type",
dataTypeClass = String.class, required = true),
})
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> deleteByKey(@RequestParam String name,
@RequestParam String type) {
return Response.success(clusterService.deleteByKey(name, type,
LoginUserUtils.getLoginUser().getName()));
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongConsumeController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongConsumeController.java
index 144097c3a..faf6589ad 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongConsumeController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongConsumeController.java
@@ -18,7 +18,7 @@
package org.apache.inlong.manager.web.controller;
import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.validation.UpdateValidation;
import org.apache.inlong.manager.pojo.common.PageResult;
import org.apache.inlong.manager.pojo.common.Response;
@@ -85,7 +85,8 @@ public class InlongConsumeController {
@ApiOperation(value = "List inlong consume by pagination")
public Response<PageResult<InlongConsumeBriefInfo>> list(@RequestBody
InlongConsumePageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
+ request.setIsAdminRole(
+
LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
return Response.success(consumeService.list(request));
}
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
index 706f862d9..dc6feaf52 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
@@ -18,7 +18,7 @@
package org.apache.inlong.manager.web.controller;
import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.validation.SaveValidation;
import org.apache.inlong.manager.common.validation.UpdateValidation;
import org.apache.inlong.manager.pojo.common.PageResult;
@@ -120,7 +120,8 @@ public class InlongGroupController {
@ApiOperation(value = "List inlong groups by paginating")
public Response<PageResult<InlongGroupBriefInfo>> listBrief(@RequestBody
InlongGroupPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
+ request.setIsAdminRole(
+
LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
return Response.success(groupService.listBrief(request));
}
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongRoleController.java
similarity index 58%
copy from
inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
copy to
inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongRoleController.java
index c10ccd69b..b5aa8bac6 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongRoleController.java
@@ -19,13 +19,13 @@ package org.apache.inlong.manager.web.controller;
import org.apache.inlong.manager.common.enums.OperationType;
import org.apache.inlong.manager.pojo.common.Response;
-import org.apache.inlong.manager.pojo.user.TenantRoleInfo;
-import org.apache.inlong.manager.pojo.user.TenantRolePageRequest;
-import org.apache.inlong.manager.pojo.user.TenantRoleRequest;
+import org.apache.inlong.manager.pojo.user.InlongRoleInfo;
+import org.apache.inlong.manager.pojo.user.InlongRolePageRequest;
+import org.apache.inlong.manager.pojo.user.InlongRoleRequest;
import org.apache.inlong.manager.pojo.user.UserRoleCode;
import org.apache.inlong.manager.service.operationlog.OperationLog;
+import org.apache.inlong.manager.service.user.InlongRoleService;
import org.apache.inlong.manager.service.user.LoginUserUtils;
-import org.apache.inlong.manager.service.user.TenantRoleService;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
@@ -42,42 +42,41 @@ import
org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
-@Api(tags = "Tenant-API")
-public class InlongTenantRoleController {
+@Api(tags = "INLONG-USER-API")
+public class InlongRoleController {
@Autowired
- private TenantRoleService tenantRoleService;
+ private InlongRoleService inlongRoleService;
- @RequestMapping(value = "/role/tenant/get/{id}", method =
RequestMethod.GET)
- @ApiOperation(value = "Get tenant role")
+ @RequestMapping(value = "/role/inlong/get/{id}", method =
RequestMethod.GET)
+ @ApiOperation(value = "Get inlong role")
+ @RequiresRoles(value = UserRoleCode.INLONG_ADMIN)
@ApiImplicitParam(name = "id", dataTypeClass = Integer.class, required =
true)
- @RequiresRoles(value = UserRoleCode.ADMIN)
- public Response<TenantRoleInfo> get(@PathVariable int id) {
- return Response.success(tenantRoleService.get(id));
+ public Response<InlongRoleInfo> get(@PathVariable int id) {
+ return Response.success(inlongRoleService.get(id));
}
- @RequestMapping(value = "/role/tenant/save", method = RequestMethod.POST)
+ @RequestMapping(value = "/role/inlong/save", method = RequestMethod.POST)
@OperationLog(operation = OperationType.CREATE)
- @ApiOperation(value = "Save tenant role")
- @RequiresRoles(value = UserRoleCode.ADMIN)
- public Response<Integer> save(@Validated @RequestBody TenantRoleRequest
request) {
+ @RequiresRoles(value = UserRoleCode.INLONG_ADMIN)
+ @ApiOperation(value = "Save inlong role")
+ public Response<Integer> save(@Validated @RequestBody InlongRoleRequest
request) {
String operator = LoginUserUtils.getLoginUser().getName();
- return Response.success(tenantRoleService.save(request, operator));
+ return Response.success(inlongRoleService.save(request, operator));
}
- @RequestMapping(value = "/role/tenant/update", method = RequestMethod.POST)
- @OperationLog(operation = OperationType.CREATE)
- @ApiOperation(value = "Update tenant role")
- @RequiresRoles(value = UserRoleCode.ADMIN)
- public Response<Boolean> update(@Validated @RequestBody TenantRoleRequest
request) {
+ @RequestMapping(value = "/role/inlong/update", method = RequestMethod.POST)
+ @OperationLog(operation = OperationType.UPDATE)
+ @RequiresRoles(value = UserRoleCode.INLONG_ADMIN)
+ @ApiOperation(value = "Save inlong role")
+ public Response<Boolean> update(@Validated @RequestBody InlongRoleRequest
request) {
String operator = LoginUserUtils.getLoginUser().getName();
- return Response.success(tenantRoleService.update(request, operator));
+ return Response.success(inlongRoleService.update(request, operator));
}
- @RequestMapping(value = "/role/tenant/list", method = RequestMethod.POST)
- @ApiOperation(value = "List tenant roles by paginating")
- public Response<PageInfo<TenantRoleInfo>> listByCondition(@RequestBody
TenantRolePageRequest request) {
- return Response.success(tenantRoleService.listByCondition(request));
+ @RequestMapping(value = "/role/inlong/list", method = RequestMethod.POST)
+ @ApiOperation(value = "List inlong roles by paginating")
+ public Response<PageInfo<InlongRoleInfo>> listByCondition(@RequestBody
InlongRolePageRequest request) {
+ return Response.success(inlongRoleService.listByCondition(request));
}
-
}
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
index 84b9dd331..e2e8cf3eb 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
@@ -111,7 +111,7 @@ public class InlongStreamController {
@ApiOperation(value = "List inlong stream briefs by paginating")
public Response<PageResult<InlongStreamBriefInfo>>
listByCondition(@RequestBody InlongStreamPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
+
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.TENANT_ADMIN));
return Response.success(streamService.listBrief(request));
}
@@ -119,7 +119,7 @@ public class InlongStreamController {
@ApiOperation(value = "List inlong streams with sources and sinks by
paginating")
public Response<PageResult<InlongStreamInfo>>
listAllWithGroupId(@RequestBody InlongStreamPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
+
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.TENANT_ADMIN));
return Response.success(streamService.listAll(request));
}
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
index c10ccd69b..751b8433e 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongTenantRoleController.java
@@ -51,7 +51,7 @@ public class InlongTenantRoleController {
@RequestMapping(value = "/role/tenant/get/{id}", method =
RequestMethod.GET)
@ApiOperation(value = "Get tenant role")
@ApiImplicitParam(name = "id", dataTypeClass = Integer.class, required =
true)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<TenantRoleInfo> get(@PathVariable int id) {
return Response.success(tenantRoleService.get(id));
}
@@ -59,7 +59,7 @@ public class InlongTenantRoleController {
@RequestMapping(value = "/role/tenant/save", method = RequestMethod.POST)
@OperationLog(operation = OperationType.CREATE)
@ApiOperation(value = "Save tenant role")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> save(@Validated @RequestBody TenantRoleRequest
request) {
String operator = LoginUserUtils.getLoginUser().getName();
return Response.success(tenantRoleService.save(request, operator));
@@ -68,7 +68,7 @@ public class InlongTenantRoleController {
@RequestMapping(value = "/role/tenant/update", method = RequestMethod.POST)
@OperationLog(operation = OperationType.CREATE)
@ApiOperation(value = "Update tenant role")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> update(@Validated @RequestBody TenantRoleRequest
request) {
String operator = LoginUserUtils.getLoginUser().getName();
return Response.success(tenantRoleService.update(request, operator));
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
index 4f2795ff3..68a5001c7 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
@@ -59,7 +59,7 @@ public class UserController {
@PostMapping("/user/register")
@ApiOperation(value = "Register user")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> register(@Validated @RequestBody UserRequest
userInfo) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(userService.save(userInfo, currentUser));
@@ -93,7 +93,7 @@ public class UserController {
@DeleteMapping("/user/delete")
@ApiOperation(value = "Delete user by id")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> delete(@RequestParam("id") Integer id) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(userService.delete(id, currentUser));
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
index 29793917a..aa2fee23f 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
@@ -18,7 +18,7 @@
package org.apache.inlong.manager.web.controller;
import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.pojo.common.PageResult;
import org.apache.inlong.manager.pojo.common.Response;
import org.apache.inlong.manager.pojo.user.UserRoleCode;
@@ -56,7 +56,7 @@ public class WorkflowApproverController {
@PostMapping("/workflow/approver/save")
@OperationLog(operation = OperationType.CREATE)
@ApiOperation(value = "Save approver info")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> save(@RequestBody ApproverRequest config) {
return Response.success(workflowApproverService.save(config,
LoginUserUtils.getLoginUser().getName()));
}
@@ -72,14 +72,15 @@ public class WorkflowApproverController {
@ApiOperation(value = "List workflow approvers")
public Response<PageResult<ApproverResponse>>
listByCondition(ApproverPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
-
request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
+ request.setIsAdminRole(
+
LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name()));
return
Response.success(workflowApproverService.listByCondition(request));
}
@PostMapping("/workflow/approver/update")
@OperationLog(operation = OperationType.UPDATE)
@ApiOperation(value = "Update approver info")
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Integer> update(@RequestBody ApproverRequest request) {
return Response.success(workflowApproverService.update(request,
LoginUserUtils.getLoginUser().getName()));
}
@@ -88,7 +89,7 @@ public class WorkflowApproverController {
@OperationLog(operation = OperationType.DELETE)
@ApiOperation(value = "Delete approver by ID")
@ApiImplicitParam(name = "id", value = "Workflow approver ID",
dataTypeClass = Integer.class, required = true)
- @RequiresRoles(value = UserRoleCode.ADMIN)
+ @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
public Response<Boolean> delete(@PathVariable Integer id) {
workflowApproverService.delete(id,
LoginUserUtils.getLoginUser().getName());
return Response.success(true);
diff --git
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
index efbd4abae..e6655affe 100644
---
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
+++
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
@@ -17,7 +17,7 @@
package org.apache.inlong.manager.web.controller;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.JsonUtils;
import org.apache.inlong.manager.pojo.common.Response;
import org.apache.inlong.manager.pojo.user.UserLoginRequest;
@@ -144,7 +144,7 @@ class AnnoControllerTest extends WebBaseTest {
UserRequest userInfo = UserRequest.builder()
.name("test_name")
.password(TEST_PWD)
- .accountType(UserTypeEnum.ADMIN.getCode())
+ .accountType(TenantUserTypeEnum.TENANT_ADMIN.getCode())
.validDays(88888)
.build();
@@ -166,7 +166,7 @@ class AnnoControllerTest extends WebBaseTest {
// Username already exists in the init sql
.name("admin")
.password(TEST_PWD)
- .accountType(UserTypeEnum.ADMIN.getCode())
+ .accountType(TenantUserTypeEnum.TENANT_ADMIN.getCode())
.validDays(88888)
.build();
diff --git
a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/ProcessServiceImpl.java
b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/ProcessServiceImpl.java
index fe5f712fc..699cff3ec 100644
---
a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/ProcessServiceImpl.java
+++
b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/ProcessServiceImpl.java
@@ -21,7 +21,7 @@ import
org.apache.inlong.manager.common.consts.InlongConstants;
import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
import org.apache.inlong.manager.common.enums.ProcessStatus;
import org.apache.inlong.manager.common.enums.TaskStatus;
-import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.enums.TenantUserTypeEnum;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.dao.entity.InlongGroupEntity;
import org.apache.inlong.manager.dao.entity.UserEntity;
@@ -132,7 +132,8 @@ public class ProcessServiceImpl implements ProcessService {
InlongGroupEntity groupEntity = groupMapper.selectByGroupId(groupId);
UserEntity userEntity = userMapper.selectByName(user);
boolean isInCharge = Preconditions.inSeparatedString(user,
groupEntity.getInCharges(), InlongConstants.COMMA);
- Preconditions.expectTrue(isInCharge ||
UserTypeEnum.ADMIN.getCode().equals(userEntity.getAccountType()),
+ Preconditions.expectTrue(
+ isInCharge ||
TenantUserTypeEnum.TENANT_ADMIN.getCode().equals(userEntity.getAccountType()),
errMsg);
}