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

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 249b47083b4ec0751d6436380306bda87056314b
Author: prashant <prashantsatam...@gmail.com>
AuthorDate: Wed Oct 4 12:12:53 2023 +0530

    RANGER-4442: add creator as ADMIN in ACL dataShare, dataset and project
    
    Signed-off-by: Madhan Neethiraj <mad...@apache.org>
---
 .../java/org/apache/ranger/biz/GdsDBStore.java     | 34 ++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java 
b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
index a1f5ef6fe..42a2fa16c 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
@@ -46,6 +46,7 @@ import 
org.apache.ranger.plugin.model.RangerGds.RangerDataShare;
 import org.apache.ranger.plugin.model.RangerGds.RangerDataShareInDataset;
 import org.apache.ranger.plugin.model.RangerGds.RangerDataset;
 import org.apache.ranger.plugin.model.RangerGds.RangerDatasetInProject;
+import org.apache.ranger.plugin.model.RangerGds.RangerGdsObjectACL;
 import org.apache.ranger.plugin.model.RangerGds.RangerProject;
 import org.apache.ranger.plugin.model.RangerGds.RangerSharedResource;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem;
@@ -174,6 +175,12 @@ public class GdsDBStore extends AbstractGdsStore {
             dataset.setGuid(guidUtil.genGUID());
         }
 
+        if (dataset.getAcl() == null) {
+            dataset.setAcl(new RangerGdsObjectACL());
+        }
+
+        addCreatorAsAclAdmin(dataset.getAcl());
+
         RangerDataset ret = datasetService.create(dataset);
 
         datasetService.createObjectHistory(ret, null, 
RangerServiceService.OPERATION_CREATE_CONTEXT);
@@ -451,6 +458,12 @@ public class GdsDBStore extends AbstractGdsStore {
             project.setGuid(guidUtil.genGUID());
         }
 
+        if (project.getAcl() == null) {
+            project.setAcl(new RangerGdsObjectACL());
+        }
+
+        addCreatorAsAclAdmin(project.getAcl());
+
         RangerProject ret = projectService.create(project);
 
         projectService.createObjectHistory(ret, null, 
RangerServiceService.OPERATION_CREATE_CONTEXT);
@@ -733,6 +746,12 @@ public class GdsDBStore extends AbstractGdsStore {
             dataShare.setGuid(guidUtil.genGUID());
         }
 
+        if (dataShare.getAcl() == null) {
+            dataShare.setAcl(new RangerGdsObjectACL());
+        }
+
+        addCreatorAsAclAdmin(dataShare.getAcl());
+
         RangerDataShare ret = dataShareService.create(dataShare);
 
         dataShareService.createObjectHistory(ret, null, 
RangerServiceService.OPERATION_CREATE_CONTEXT);
@@ -1394,4 +1413,19 @@ public class GdsDBStore extends AbstractGdsStore {
             }
         }
     }
+
+    private void addCreatorAsAclAdmin(RangerGdsObjectACL acl) {
+        String                     currentUser = 
bizUtil.getCurrentUserLoginId();
+        Map<String, GdsPermission> userAcl     = acl.getUsers();
+
+        if (userAcl == null) {
+            userAcl = new HashMap<>();
+
+            acl.setUsers(userAcl);
+        }
+
+        if (acl.getUsers().get(currentUser) != GdsPermission.ADMIN) {
+            acl.getUsers().put(currentUser, GdsPermission.ADMIN);
+        }
+    }
 }

Reply via email to