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); + } + } }