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

dhavaljrajpara 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 4f0b4e7d0 RANGER-5596 : Blank resource type created during new global 
policy creation setup. (#1093)
4f0b4e7d0 is described below

commit 4f0b4e7d06626ee8d6b281a680dbf90dec92f59e
Author: Dhaval Rajpara <[email protected]>
AuthorDate: Mon Jul 20 16:34:52 2026 +0530

    RANGER-5596 : Blank resource type created during new global policy creation 
setup. (#1093)
---
 .../views/PolicyListing/AddUpdatePolicyForm.jsx    | 42 +++-------------------
 .../EditNewPolicyForm/EditPolicyForm.jsx           | 13 ++++---
 .../src/views/Resources/ResourceComp.jsx           | 34 ++++++++++++++----
 .../src/views/Resources/ResourceSelectComp.jsx     |  3 +-
 4 files changed, 44 insertions(+), 48 deletions(-)

diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
index de3a2bf1d..5c0da101e 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
@@ -174,32 +174,6 @@ export default function AddUpdatePolicyForm() {
     setShowDelete(false);
   };
 
-  const isDirtyFieldCheck = (dirtyFields, modified, values, initialValues) => {
-    let modifiedVal = false;
-    if (!isEmpty(dirtyFields)) {
-      for (let dirtyFieldVal in dirtyFields) {
-        modifiedVal = modified?.[dirtyFieldVal];
-        if (
-          values?.validitySchedules ||
-          modified?.validitySchedules ||
-          values?.conditions ||
-          modified?.conditions ||
-          modifiedVal == true
-        ) {
-          modifiedVal = true;
-          break;
-        }
-      }
-    }
-    if (
-      !isEqual(values?.validitySchedules, initialValues?.validitySchedules) ||
-      !isEqual(values?.conditions, initialValues?.conditions)
-    ) {
-      modifiedVal = true;
-    }
-    return modifiedVal;
-  };
-
   const fetchUsersData = async (inputValue) => {
     let params = { name: inputValue || "", isVisible: 1 };
     let op = [];
@@ -1051,21 +1025,13 @@ export default function AddUpdatePolicyForm() {
               form: {
                 mutators: { push: addPolicyItem }
               },
-              dirtyFields,
-              modified,
-              initialValues
+              initialValues,
+              pristine
             }) => (
               <>
                 <PromptDialog
                   isDirtyField={
-                    dirty == true || !isEqual(initialValues, values)
-                      ? isDirtyFieldCheck(
-                          dirtyFields,
-                          modified,
-                          values,
-                          initialValues
-                        )
-                      : false
+                    dirty && !isEqual(values, initialValues) && !pristine
                   }
                   isUnblock={preventUnBlock}
                 />
@@ -1536,6 +1502,8 @@ export default function AddUpdatePolicyForm() {
                                     </Button>
                                   </Col>
                                 )}
+                                {fields.length > 1 &&
+                                  index < fields.length - 1 && <hr />}
                               </Row>
                             ))
                           }
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/NewPolicyForm/EditNewPolicyForm/EditPolicyForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/NewPolicyForm/EditNewPolicyForm/EditPolicyForm.jsx
index fe3d1aadf..f5fa0c9ea 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/NewPolicyForm/EditNewPolicyForm/EditPolicyForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/NewPolicyForm/EditNewPolicyForm/EditPolicyForm.jsx
@@ -43,7 +43,9 @@ import {
   has,
   maxBy,
   forIn,
-  includes
+  includes,
+  filter,
+  isEqual
 } from "lodash";
 import moment from "moment";
 import {
@@ -354,7 +356,7 @@ const getPolicyItemsVal = (formData, name, 
finalAccessTypes) => {
         );
       } else if (isArray(key.accesses) && key.accesses.length > 0) {
         const validValues = map(finalAccessTypes, "value");
-        const result = _.filter(key.accesses, (item) =>
+        const result = filter(key.accesses, (item) =>
           includes(validValues, item.type)
         );
         obj.accesses = result.map((a) => {
@@ -713,11 +715,14 @@ export default function EditPolicyForm() {
             invalid,
             errors,
             dirty,
-            pristine
+            pristine,
+            initialValues
           }) => (
             <form onSubmit={submitForm} noValidate>
               <PromptDialog
-                isDirtyField={dirty && !pristine}
+                isDirtyField={
+                  dirty && !isEqual(values, initialValues) && !pristine
+                }
                 isUnblock={preventUnBlock}
               />
 
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
index ae1cee2a5..119911325 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
@@ -179,18 +179,24 @@ export default function ResourceComp(props) {
         as={Row}
         className="mb-4 align-items-start"
         controlId={`Resource-${levelKey}`}
-        key={`Resource-${levelKey}`}
+        key={`${name}-${levelKey}`}
       >
         <Col className="column-1-fixed">
           <Field
-            defaultValue={!policyId && getResourceLabelOp(levelKey, index)[0]}
+            initialValue={
+              !policyId && !formValues?.[resourceKey]
+                ? getResourceLabelOp(levelKey, index)[0]
+                : undefined
+            }
             name={
               isMultiResources
                 ? `${name}.resourceName-${levelKey}`
                 : `resourceName-${levelKey}`
             }
-            render={({ input }) =>
-              formValues[resourceKey] ? (
+            render={({ input }) => {
+              const hasResourceData = Boolean(formValues?.[resourceKey]);
+
+              return hasResourceData ? (
                 renderResourceSelect(levelKey, index) ? (
                   <span className="float-end fnt-14">
                     <FormB.Label className="position-relative">
@@ -217,8 +223,8 @@ export default function ResourceComp(props) {
                     <RenderValidateField name={`resourceName-${levelKey}`} />
                   </div>
                 )
-              ) : null
-            }
+              ) : null;
+            }}
           />
         </Col>
 
@@ -249,6 +255,14 @@ export default function ResourceComp(props) {
                         ? `${name}.isExcludesSupport-${levelKey}`
                         : `isExcludesSupport-${levelKey}`
                     }
+                    key={
+                      isMultiResources
+                        ? `${name}.isExcludesSupport-${levelKey}`
+                        : `isExcludesSupport-${levelKey}`
+                    }
+                    initialValue={
+                      formValues?.[`isExcludesSupport-${levelKey}`] ?? true
+                    }
                     render={({ input }) => (
                       <BootstrapSwitchButton
                         {...input}
@@ -274,6 +288,14 @@ export default function ResourceComp(props) {
                         ? `${name}.isRecursiveSupport-${levelKey}`
                         : `isRecursiveSupport-${levelKey}`
                     }
+                    key={
+                      isMultiResources
+                        ? `${name}.isRecursiveSupport-${levelKey}`
+                        : `isRecursiveSupport-${levelKey}`
+                    }
+                    initialValue={
+                      formValues?.[`isRecursiveSupport-${levelKey}`] ?? true
+                    }
                     render={({ input }) => (
                       <BootstrapSwitchButton
                         {...input}
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
index 76e00c1c2..c8cd97bc1 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
@@ -167,11 +167,12 @@ export default function ResourceSelectComp(props) {
 
   return (
     <Field
-      key={formValues[`resourceName-${levelKey}`].name}
+      key={isMultiResources ? `${name}-value-${levelKey}` : 
`value-${levelKey}`}
       className="form-control"
       name={
         isMultiResources ? `${name}.value-${levelKey}` : `value-${levelKey}`
       }
+      initialValue={formValues?.[`value-${levelKey}`] || []}
       validate={
         formValues &&
         formValues[`resourceName-${levelKey}`]?.mandatory &&

Reply via email to