From cb303cf6320b256defa405243c8042204c88a49e Mon Sep 17 00:00:00 2001
From: "Dhaval.Rajpara" <dhavalrajpara1304@gmail.com>
Date: Thu, 23 Jan 2025 16:26:32 +0530
Subject: [PATCH] RANGER-4983 : Ranger Audit Filter for the HBase service is
 not working as expected

---
 .../ServiceManager/ServiceDefinition.jsx      |  4 +-
 .../src/views/ServiceManager/ServiceForm.jsx  | 74 ++++++++-----------
 .../ServiceManager/ServiceViewDetails.jsx     |  4 +-
 3 files changed, 33 insertions(+), 49 deletions(-)

diff --git a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinition.jsx b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinition.jsx
index 188e1a0f53..3fbe68d405 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinition.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinition.jsx
@@ -155,9 +155,9 @@ class ServiceDefinition extends Component {
           {resources[key].isExcludes !== undefined ? (
             <h6 className="d-inline">
               {resources[key].isExcludes ? (
-                <span className="badge bg-dark float-end">Include</span>
-              ) : (
                 <span className="badge bg-dark float-end">Exclude</span>
+              ) : (
+                <span className="badge bg-dark float-end">Include</span>
               )}
             </h6>
           ) : (
diff --git a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
index 0d281f6385..30a16752eb 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
@@ -226,53 +226,37 @@ class ServiceForm extends Component {
           if (key === "resources" && !isEmpty(value)) {
             obj.resources = {};
 
-            let levels = uniq(map(serviceDef.resources, "level"));
-
-            levels.map((level) => {
-              let resourceObj = find(serviceDef.resources, {
-                level: level,
-                name: value[`resourceName-${level}`]?.name
-              });
-              if (
-                value[`resourceName-${level}`] !== undefined &&
-                value[`value-${level}`] !== undefined
-              ) {
-                obj.resources[value[`resourceName-${level}`].name] = {
-                  values: isArray(value[`value-${level}`])
-                    ? map(value[`value-${level}`], "value")
-                    : [value[`value-${level}`].value]
+            const levels = uniq(map(serviceDef.resources, "level"));
+
+            levels.forEach((level) => {
+              const resourceName = value[`resourceName-${level}`]?.name;
+              const resourceValue = value[`value-${level}`];
+              const isRecursiveSupport = value[`isRecursiveSupport-${level}`];
+              const isExcludesSupport = value[`isExcludesSupport-${level}`];
+
+              if (resourceName && resourceValue !== undefined) {
+                const resourceObj = find(serviceDef.resources, {
+                  level,
+                  name: resourceName
+                });
+
+                obj.resources[resourceName] = {
+                  values: Array.isArray(resourceValue)
+                    ? map(resourceValue, "value")
+                    : [resourceValue.value]
                 };
 
-                if (
-                  value[`isRecursiveSupport-${level}`] !== undefined &&
-                  resourceObj.recursiveSupported
-                ) {
-                  obj.resources[
-                    value[`resourceName-${level}`].name
-                  ].isRecursive = value[`isRecursiveSupport-${level}`];
-                } else if (
-                  value[`isRecursiveSupport-${level}`] === undefined &&
-                  resourceObj.recursiveSupported
-                ) {
-                  obj.resources[
-                    value[`resourceName-${level}`].name
-                  ].isRecursive = resourceObj.recursiveSupported;
+                if (resourceObj?.recursiveSupported) {
+                  obj.resources[resourceName].isRecursive =
+                    isRecursiveSupport !== undefined
+                      ? isRecursiveSupport
+                      : resourceObj.recursiveSupported;
                 }
-
-                if (
-                  value[`isExcludesSupport-${level}`] !== undefined &&
-                  resourceObj.excludesSupported
-                ) {
-                  obj.resources[
-                    value[`resourceName-${level}`].name
-                  ].isExcludes = value[`isExcludesSupport-${level}`];
-                } else if (
-                  value[`isExcludesSupport-${level}`] === undefined &&
-                  resourceObj.excludesSupported
-                ) {
-                  obj.resources[
-                    value[`resourceName-${level}`].name
-                  ].isExcludes = resourceObj.excludesSupported;
+                if (resourceObj?.excludesSupported) {
+                  obj.resources[resourceName].isExcludes =
+                    isExcludesSupport !== undefined
+                      ? !isExcludesSupport
+                      : false;
                 }
               }
             });
@@ -521,7 +505,7 @@ class ServiceForm extends Component {
             );
             if (setResources?.excludesSupported) {
               obj.resources[`isExcludesSupport-${setResources.level}`] =
-                value?.isExcludes != false;
+                value?.isExcludes ? !value.isExcludes : true;
             }
             if (setResources?.recursiveSupported) {
               obj.resources[`isRecursiveSupport-${setResources.level}`] =
diff --git a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
index 9ac234474f..9ee6b2f389 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
@@ -98,9 +98,9 @@ export const ServiceViewDetails = (props) => {
           {resources[key].isExcludes !== undefined ? (
             <h6 className="d-inline">
               {resources[key].isExcludes ? (
-                <span className="badge bg-dark float-end">Include</span>
-              ) : (
                 <span className="badge bg-dark float-end">Exclude</span>
+              ) : (
+                <span className="badge bg-dark float-end">Include</span>
               )}
             </h6>
           ) : (