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 &&