You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by do...@apache.org on 2022/08/08 02:21:10 UTC
[inlong] branch master updated: [INLONG-5369][Manager] Add user extended parameters to store 3rd party authentication info (#5384)
This is an automated email from the ASF dual-hosted git repository.
dockerzhang 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 500f08f5f [INLONG-5369][Manager] Add user extended parameters to store 3rd party authentication info (#5384)
500f08f5f is described below
commit 500f08f5fbd2cfaebb8418bf8942542cd1e7fd9f
Author: woofyzhao <49...@qq.com>
AuthorDate: Mon Aug 8 10:21:04 2022 +0800
[INLONG-5369][Manager] Add user extended parameters to store 3rd party authentication info (#5384)
---
.../inlong/manager/common/enums/UserTypeEnum.java | 4 ++
.../inlong/manager/dao/entity/UserEntity.java | 1 +
.../manager/dao/mapper/UserEntityMapper.java | 2 +
.../main/resources/mappers/UserEntityMapper.xml | 58 ++++++++++++++++++++--
.../apache/inlong/manager/pojo/user/UserInfo.java | 2 +
.../inlong/manager/pojo/user/UserRequest.java | 3 ++
.../inlong/manager/service/user/UserService.java | 2 +-
.../manager/service/user/UserServiceImpl.java | 14 ++++--
.../main/resources/h2/apache_inlong_manager.sql | 1 +
.../manager-web/sql/apache_inlong_manager.sql | 1 +
.../manager/web/controller/AnnoController.java | 3 +-
.../manager/web/controller/UserController.java | 3 +-
12 files changed, 82 insertions(+), 12 deletions(-)
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/UserTypeEnum.java
index d89af2581..725606324 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/UserTypeEnum.java
@@ -58,6 +58,10 @@ public enum UserTypeEnum implements IntListValuable {
.orElse(null);
}
+ public static String name(Integer value) {
+ return parse(value).name();
+ }
+
@Override
public List<Integer> valueList() {
return ARRAYS;
diff --git a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/UserEntity.java b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/UserEntity.java
index e1cf5c3a3..277059340 100644
--- a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/UserEntity.java
+++ b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/UserEntity.java
@@ -38,6 +38,7 @@ public class UserEntity implements Serializable {
private Integer encryptVersion;
private Integer accountType;
private Date dueDate;
+ private String extParams;
private Integer status;
private Integer isDeleted;
diff --git a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/UserEntityMapper.java b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/UserEntityMapper.java
index e5e972d7e..9a71f927d 100644
--- a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/UserEntityMapper.java
+++ b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/UserEntityMapper.java
@@ -36,6 +36,8 @@ public interface UserEntityMapper {
int updateById(UserEntity record);
+ int updateByPrimaryKeySelective(UserEntity record);
+
int deleteById(Integer id);
}
\ No newline at end of file
diff --git a/inlong-manager/manager-dao/src/main/resources/mappers/UserEntityMapper.xml b/inlong-manager/manager-dao/src/main/resources/mappers/UserEntityMapper.xml
index 674e552ce..eca963f52 100644
--- a/inlong-manager/manager-dao/src/main/resources/mappers/UserEntityMapper.xml
+++ b/inlong-manager/manager-dao/src/main/resources/mappers/UserEntityMapper.xml
@@ -37,10 +37,11 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime"/>
<result column="version" jdbcType="INTEGER" property="version"/>
+ <result column="ext_params" jdbcType="LONGVARCHAR" property="extParams"/>
</resultMap>
<sql id="Base_Column_List">
id, account_type, name, password, secret_key, public_key, private_key, encrypt_version,
- due_date, status, is_deleted, creator, modifier, create_time, modify_time, version
+ due_date, status, is_deleted, creator, modifier, create_time, modify_time, version, ext_params
</sql>
<insert id="insert" useGeneratedKeys="true" keyProperty="id"
@@ -48,11 +49,12 @@
insert into user (id, name, password,
secret_key, public_key, private_key,
encrypt_version, account_type, due_date,
- status, creator, modifier)
+ status, creator, modifier, ext_params)
values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
#{secretKey,jdbcType=VARCHAR}, #{publicKey,jdbcType=VARCHAR}, #{privateKey,jdbcType=VARCHAR},
#{encryptVersion,jdbcType=INTEGER}, #{accountType,jdbcType=INTEGER}, #{dueDate,jdbcType=TIMESTAMP},
- #{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, #{modifier,jdbcType=VARCHAR})
+ #{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, #{modifier,jdbcType=VARCHAR},
+ #{extParams,jdbcType=LONGVARCHAR})
</insert>
<select id="selectById" parameterType="java.lang.Integer" resultMap="BaseResultMap">
@@ -100,9 +102,55 @@
status = #{status,jdbcType=INTEGER},
is_deleted = #{isDeleted,jdbcType=INTEGER},
modifier = #{modifier,jdbcType=VARCHAR},
- version = #{version,jdbcType=INTEGER} + 1
+ version = #{version,jdbcType=INTEGER} + 1,
+ ext_params = #{extParams,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=INTEGER}
- and version = #{version,jdbcType=INTEGER}
+ and version = #{version,jdbcType=INTEGER}
+ </update>
+
+ <update id="updateByPrimaryKeySelective" parameterType="org.apache.inlong.manager.dao.entity.UserEntity">
+ update user
+ <set>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="password != null">
+ password = #{password,jdbcType=VARCHAR},
+ </if>
+ <if test="secretKey != null">
+ secret_key = #{secretKey,jdbcType=VARCHAR},
+ </if>
+ <if test="publicKey != null">
+ public_key = #{publicKey,jdbcType=VARCHAR},
+ </if>
+ <if test="privateKey != null">
+ private_key = #{privateKey,jdbcType=VARCHAR},
+ </if>
+ <if test="encryptVersion != null">
+ encrypt_version = #{encryptVersion,jdbcType=INTEGER},
+ </if>
+ <if test="accountType != null">
+ account_type = #{accountType,jdbcType=INTEGER},
+ </if>
+ <if test="dueDate != null">
+ due_date = #{dueDate,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isDeleted != null">
+ is_deleted = #{isDeleted,jdbcType=INTEGER},
+ </if>
+ <if test="modifier != null">
+ modifier = #{modifier,jdbcType=VARCHAR},
+ </if>
+ <if test="extParams != null">
+ ext_params = #{extParams,jdbcType=LONGVARCHAR},
+ </if>
+ version = #{version,jdbcType=INTEGER} + 1,
+ </set>
+ where id = #{id,jdbcType=INTEGER}
+ and version = #{version,jdbcType=INTEGER}
</update>
<delete id="deleteById" parameterType="java.lang.Integer">
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserInfo.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserInfo.java
index 4f6fe6046..acb69098b 100644
--- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserInfo.java
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/user/UserInfo.java
@@ -87,4 +87,6 @@ public class UserInfo {
@ApiModelProperty(value = "Version number")
private Integer version;
+ @ApiModelProperty(value = "Extension json info")
+ private String extParams;
}
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 ad43bede0..15bbae2d0 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
@@ -84,4 +84,7 @@ public class UserRequest extends PageRequest {
@ApiModelProperty(value = "Version number")
private Integer version;
+ @ApiModelProperty(value = "Extension json info")
+ private String extParams;
+
}
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
index f967dd2a3..0932d7c30 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
@@ -32,7 +32,7 @@ public interface UserService {
* @param request user info request
* @return user id after saving
*/
- Integer save(UserRequest request);
+ Integer save(UserRequest request, String currentUser);
/**
* Get user info by user id
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 d2e5e4a79..7f8198de8 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
@@ -61,7 +61,7 @@ public class UserServiceImpl implements UserService {
private UserEntityMapper userMapper;
@Override
- public Integer save(UserRequest request) {
+ public Integer save(UserRequest request, String currentUser) {
String username = request.getName();
UserEntity userExists = userMapper.selectByName(username);
String password = request.getPassword();
@@ -73,9 +73,9 @@ public class UserServiceImpl implements UserService {
entity.setPassword(SHAUtils.encrypt(password));
entity.setAccountType(request.getAccountType());
entity.setDueDate(DateUtils.getExpirationDate(request.getValidDays()));
- String currentUser = LoginUserUtils.getLoginUser().getName();
entity.setCreator(currentUser);
entity.setModifier(currentUser);
+ entity.setExtParams(request.getExtParams());
try {
Map<String, String> keyPairs = RSAUtils.generateRSAKeyPairs();
String publicKey = keyPairs.get(RSAUtils.PUBLIC_KEY);
@@ -139,7 +139,12 @@ public class UserServiceImpl implements UserService {
public UserInfo getByName(String name) {
Preconditions.checkNotNull(name, "User name cannot be null");
UserEntity entity = userMapper.selectByName(name);
- return CommonBeanUtils.copyProperties(entity, UserInfo::new);
+ if (entity == null) {
+ return null;
+ }
+ UserInfo userInfo = CommonBeanUtils.copyProperties(entity, UserInfo::new);
+ userInfo.setValidDays(DateUtils.getValidDays(entity.getCreateTime(), entity.getDueDate()));
+ return userInfo;
}
@Override
@@ -211,8 +216,9 @@ public class UserServiceImpl implements UserService {
updateUserEntity.setDueDate(DateUtils.getExpirationDate(request.getValidDays()));
updateUserEntity.setAccountType(request.getAccountType());
updateUserEntity.setName(updateName);
+ updateUserEntity.setExtParams(request.getExtParams());
- int rowCount = userMapper.updateById(updateUserEntity);
+ int rowCount = userMapper.updateByPrimaryKeySelective(updateUserEntity);
if (rowCount != InlongConstants.AFFECTED_ONE_ROW) {
LOGGER.error(errMsg);
throw new BusinessException(ErrorCodeEnum.CONFIG_EXPIRED);
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 5e1b99c35..6b3f4f882 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
@@ -545,6 +545,7 @@ CREATE TABLE IF NOT EXISTS `user`
`encrypt_version` int(11) DEFAULT NULL COMMENT 'Encryption key version',
`account_type` int(11) NOT NULL DEFAULT '1' COMMENT 'Account type, 0-manager 1-normal',
`due_date` datetime DEFAULT NULL COMMENT 'Due date for user',
+ `ext_params` text COMMENT 'Json extension info',
`status` int(11) DEFAULT '100' COMMENT 'Status',
`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',
diff --git a/inlong-manager/manager-web/sql/apache_inlong_manager.sql b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
index d1cefd395..6b0d630bd 100644
--- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
+++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
@@ -572,6 +572,7 @@ CREATE TABLE IF NOT EXISTS `user`
`encrypt_version` int(11) DEFAULT NULL COMMENT 'Encryption key version',
`account_type` int(11) NOT NULL DEFAULT '1' COMMENT 'Account type, 0-manager 1-normal',
`due_date` datetime DEFAULT NULL COMMENT 'Due date for user',
+ `ext_params` text COMMENT 'Json extension info',
`status` int(11) DEFAULT '100' COMMENT 'Status',
`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',
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 a09711116..8867fc5ef 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
@@ -60,7 +60,8 @@ public class AnnoController {
@PostMapping("/anno/register")
public Response<Integer> register(@Validated @RequestBody UserRequest request) {
- return Response.success(userService.save(request));
+ String currentUser = LoginUserUtils.getLoginUser().getName();
+ return Response.success(userService.save(request, currentUser));
}
@GetMapping("/anno/logout")
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 d7d7eacf4..6c1bd16b0 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
@@ -60,7 +60,8 @@ public class UserController {
@ApiOperation(value = "Register user")
@RequiresRoles(value = UserRoleCode.ADMIN)
public Response<Integer> register(@Validated @RequestBody UserRequest userInfo) {
- return Response.success(userService.save(userInfo));
+ String currentUser = LoginUserUtils.getLoginUser().getName();
+ return Response.success(userService.save(userInfo, currentUser));
}
@GetMapping("/user/get/{id}")