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 6e3c22bd3473a04c3ac877acd272cda6c1b09689
Author: prashant <[email protected]>
AuthorDate: Tue Nov 28 12:38:15 2023 +0530

    RANGER-4558: fixed validation for create/update of shared-resources in a 
dataShare
    
    Signed-off-by: Madhan Neethiraj <[email protected]>
---
 .../org/apache/ranger/validation/RangerGdsValidator.java   | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/security-admin/src/main/java/org/apache/ranger/validation/RangerGdsValidator.java
 
b/security-admin/src/main/java/org/apache/ranger/validation/RangerGdsValidator.java
index 178c8f0e2..1cc87399b 100755
--- 
a/security-admin/src/main/java/org/apache/ranger/validation/RangerGdsValidator.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/validation/RangerGdsValidator.java
@@ -246,7 +246,7 @@ public class RangerGdsValidator {
             if (existing != null) {
                 result.addValidationFailure(new 
ValidationFailureDetails(ValidationErrorCode.GDS_VALIDATION_ERR_SHARED_RESOURCE_NAME_CONFLICT,
 "name", resource.getName(), dataShare.getName(), existing));
             } else {
-                validateDataShareAdmin(dataShare, result);
+                               
validateSharedResourceCreateAndUpdate(dataShare, result);
             }
         }
 
@@ -270,7 +270,7 @@ public class RangerGdsValidator {
             if (dataShare == null) {
                 result.addValidationFailure(new 
ValidationFailureDetails(ValidationErrorCode.GDS_VALIDATION_ERR_DATA_SHARE_ID_NOT_FOUND,
 "dataShareId", resource.getDataShareId()));
             } else {
-                validateDataShareAdmin(dataShare, result);
+                               
validateSharedResourceCreateAndUpdate(dataShare, result);
             }
         }
 
@@ -720,6 +720,16 @@ public class RangerGdsValidator {
         }
     }
 
+    private void validateSharedResourceCreateAndUpdate(RangerDataShare 
dataShare, ValidationResult result) {
+        if (!dataProvider.isAdminUser()) {
+            validateAdmin(dataProvider.getCurrentUserLoginId(), "datashare", 
dataShare.getName(), dataShare.getAcl(), result);
+
+            if (!dataProvider.isServiceAdmin(dataShare.getService()) && 
!dataProvider.isZoneAdmin(dataShare.getZone())) {
+                result.addValidationFailure(new 
ValidationFailureDetails(ValidationErrorCode.GDS_VALIDATION_ERR_DATA_SHARE_NOT_SERVICE_OR_ZONE_ADMIN,
 null, dataShare.getService(), dataShare.getZone()));
+            }
+        }
+    }
+
     private void validateAcl(RangerGdsObjectACL acl, String fieldName, 
ValidationResult result) {
         if (acl != null) {
             if (MapUtils.isNotEmpty(acl.getUsers())) {

Reply via email to