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

abhay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new df0a778cb RANGER-4070: Provide mechanism to manage potentially 
multiple enrichment of an access request
df0a778cb is described below

commit df0a778cb7d14e896c7cc88a4b720645d89668c5
Author: Abhay Kulkarni <[email protected]>
AuthorDate: Sat Feb 4 22:09:42 2023 -0800

    RANGER-4070: Provide mechanism to manage potentially multiple enrichment of 
an access request
---
 .../plugin/service/RangerDefaultRequestProcessor.java |  5 +++++
 .../ranger/plugin/util/RangerAccessRequestUtil.java   | 19 ++++++++++++++++---
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
index 636d09038..80d27e8e8 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
@@ -48,6 +48,11 @@ public class RangerDefaultRequestProcessor implements 
RangerAccessRequestProcess
     @Override
     public void preProcess(RangerAccessRequest request) {
 
+        if 
(RangerAccessRequestUtil.getIsRequestPreprocessed(request.getContext())) {
+            return;
+        }
+        RangerAccessRequestUtil.setIsRequestPreprocessed(request.getContext(), 
Boolean.TRUE);
+
         setResourceServiceDef(request);
 
         RangerAccessRequestImpl reqImpl = null;
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
index 05d9a6007..0ebb9cba5 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
@@ -47,6 +47,7 @@ public class RangerAccessRequestUtil {
        public static final String KEY_CONTEXT_ACCESSTYPES = "ACCESSTYPES";
        public static final String KEY_CONTEXT_IS_ANY_ACCESS = "ISANYACCESS";
        public static final String KEY_CONTEXT_REQUEST       = "_REQUEST";
+       public static final String KEY_CONTEXT_IS_REQUEST_PREPROCESSED = 
"ISREQUESTPREPROCESSED";
 
        public static void setRequestTagsInContext(Map<String, Object> context, 
Set<RangerTagForEval> tags) {
                if(CollectionUtils.isEmpty(tags)) {
@@ -131,6 +132,9 @@ public class RangerAccessRequestUtil {
                        ret.remove(KEY_CONTEXT_TAG_OBJECT);
                        ret.remove(KEY_CONTEXT_RESOURCE);
                        ret.remove(KEY_CONTEXT_REQUEST);
+                       ret.remove(KEY_CONTEXT_ACCESSTYPES);
+                       ret.remove(KEY_CONTEXT_IS_ANY_ACCESS);
+                       ret.remove(KEY_CONTEXT_IS_REQUEST_PREPROCESSED);
                        // don't remove REQUESTED_RESOURCES
                }
 
@@ -198,9 +202,18 @@ public class RangerAccessRequestUtil {
                context.put(KEY_CONTEXT_IS_ANY_ACCESS, value);
        }
 
-       public static Boolean getIsAnyAccessInContext(Map<String, Object> 
context) {
-               Boolean ret = (Boolean)context.get(KEY_CONTEXT_IS_ANY_ACCESS);
-               return ret == null ? Boolean.FALSE : ret;
+       public static boolean getIsAnyAccessInContext(Map<String, Object> 
context) {
+               Boolean value = (Boolean)context.get(KEY_CONTEXT_IS_ANY_ACCESS);
+               return value != null && value;
+       }
+
+       public static void setIsRequestPreprocessed(Map<String, Object> 
context, Boolean value) {
+               context.put(KEY_CONTEXT_IS_REQUEST_PREPROCESSED, value);
+       }
+
+       public static boolean getIsRequestPreprocessed(Map<String, Object> 
context) {
+               Boolean value = 
(Boolean)context.get(KEY_CONTEXT_IS_REQUEST_PREPROCESSED);
+               return value != null && value;
        }
 
        public static void setAllRequestedAccessTypes(Map<String, Object> 
context, Set<String> accessTypes) {

Reply via email to