This is an automated email from the ASF dual-hosted git repository. dhavaljrajpara pushed a commit to branch RANGER-5570 in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 633b8e8c746abf33cd2f1e723a4908109a5473fb Author: Dhaval Rajpara <[email protected]> AuthorDate: Mon Jul 20 09:12:33 2026 +0530 RANGER-5596 : Blank resource type created during new global policy creation setup. --- .../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 abfa8c2bf..220c141da 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 = []; @@ -1047,21 +1021,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} /> @@ -1532,6 +1498,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 &&
