You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by pe...@apache.org on 2022/04/02 12:35:33 UTC

[incubator-linkis] branch dev-1.1.2 updated: add auth check for some udf apis (#1893)

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

peacewong pushed a commit to branch dev-1.1.2
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.1.2 by this push:
     new 658cb1f  add auth check for some udf apis (#1893)
658cb1f is described below

commit 658cb1fb1d1ce821e2a34d9dc9276e5435522e15
Author: legendtkl <ta...@gmail.com>
AuthorDate: Sat Apr 2 20:35:29 2022 +0800

    add auth check for some udf apis (#1893)
---
 .../main/java/org/apache/linkis/udf/dao/UDFTreeDao.java  |  2 ++
 .../java/org/apache/linkis/udf/dao/impl/UDFTreeDao.xml   |  9 ++++++++-
 .../linkis/udf/service/impl/UDFTreeServiceImpl.java      | 16 +++++++++++++++-
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/UDFTreeDao.java b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/UDFTreeDao.java
index 5f0209d..c8070fb 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/UDFTreeDao.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/UDFTreeDao.java
@@ -34,6 +34,8 @@ public interface UDFTreeDao {
 
     UDFTree getTreeByIdAndCategory(Long id, String category);
 
+    UDFTree getTreeByIdAndCategoryAndUserName(Long id, String category, String userName);
+
     UDFTree getTreeById(@Param("id") Long id);
 
     List<UDFTree> getTreesByParentId(Map<String, Object> params);
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/impl/UDFTreeDao.xml b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/impl/UDFTreeDao.xml
index 2c37121..37aa1c2 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/impl/UDFTreeDao.xml
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/dao/impl/UDFTreeDao.xml
@@ -51,7 +51,7 @@
         user_name = #{userName,jdbcType=VARCHAR},
         description=#{description,jdbcType=VARCHAR},
         update_time=#{updateTime,jdbcType=TIMESTAMP}
-        WHERE id = #{id,jdbcType=BIGINT}
+        WHERE id = #{id,jdbcType=BIGINT} and user_name = #{userName,jdbcType=VARCHAR}
     </update>
 
     <delete id="deleteTree">
@@ -66,6 +66,13 @@
         where id = #{arg0} and category = #{arg1}
     </select>
 
+    <select id="getTreeByIdAndCategoryAndUserName" resultMap="UDFTreeResultMap">
+        select
+        <include refid="udf_Tree_List"/>
+        from linkis_ps_udf_tree
+        where id = #{arg0} and category = #{arg1} and user_name=#{arg2}
+    </select>
+
     <select id="getTreesByParentId" resultMap="UDFTreeResultMap" parameterType="java.util.Map">
         select
         <include refid="udf_Tree_List"/>
diff --git a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/service/impl/UDFTreeServiceImpl.java b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/service/impl/UDFTreeServiceImpl.java
index 8c22910..2ec631b 100644
--- a/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/service/impl/UDFTreeServiceImpl.java
+++ b/linkis-public-enhancements/linkis-publicservice/linkis-udf/linkis-udf-service/src/main/java/org/apache/linkis/udf/service/impl/UDFTreeServiceImpl.java
@@ -22,6 +22,7 @@ import org.apache.linkis.udf.entity.UDFTree;
 import org.apache.linkis.udf.excepiton.UDFException;
 import org.apache.linkis.udf.service.UDFService;
 import org.apache.linkis.udf.service.UDFTreeService;
+import org.apache.linkis.udf.utils.ConstantVar;
 import org.apache.linkis.udf.vo.UDFInfoVo;
 
 import org.apache.commons.collections.map.HashedMap;
@@ -122,6 +123,14 @@ public class UDFTreeServiceImpl implements UDFTreeService {
     public UDFTree addTree(UDFTree udfTree, String userName) throws UDFException {
         if (userName.equals(udfTree.getUserName())) {
             try {
+                UDFTree parentTree = udfTreeDao.getTreeById(udfTree.getParent());
+                if (parentTree != null && !parentTree.getUserName().equals(userName)) {
+                    throw new UDFException(
+                            "user(用户) "
+                                    + userName
+                                    + ", the parent directory is not yours(父目录不是你的)");
+                }
+
                 logger.info(userName + " to add directory");
                 udfTreeDao.addTree(udfTree);
             } catch (Throwable e) {
@@ -186,7 +195,12 @@ public class UDFTreeServiceImpl implements UDFTreeService {
         if (id == null || id < 0) {
             udfTree = initTree(userName, category);
         } else {
-            udfTree = udfTreeDao.getTreeByIdAndCategory(id, category);
+            if (Arrays.asList(ConstantVar.specialTypes).contains(type)) {
+                udfTree = udfTreeDao.getTreeByIdAndCategory(id, category);
+            } else {
+                udfTree = udfTreeDao.getTreeByIdAndCategoryAndUserName(id, category, userName);
+            }
+
             if (udfTree == null) {
                 return udfTree;
             }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org