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}")