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

dineshkumar 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 2e4a8c17b RANGER-4010 : [addendum] Update policy UI to support 
multiple resource-sets for react ranger.
2e4a8c17b is described below

commit 2e4a8c17baec963c190966be11a934f72373644b
Author: Dhaval Rajpara <[email protected]>
AuthorDate: Wed Nov 29 10:34:14 2023 +0530

    RANGER-4010 : [addendum] Update policy UI to support multiple resource-sets 
for react ranger.
    
    Signed-off-by: Dineshkumar Yadav <[email protected]>
---
 .../react-webapp/src/components/Editable.jsx       |  2 +-
 .../views/PolicyListing/PolicyPermissionItem.jsx   | 48 ++++++++++++++++------
 2 files changed, 37 insertions(+), 13 deletions(-)

diff --git 
a/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx 
b/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx
index 98495f6cc..128a235b4 100644
--- a/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx
@@ -160,7 +160,7 @@ const CustomCondition = (props) => {
   return (
     <>
       {conditionDefVal?.length > 0 &&
-        conditionDefVal.map((m, index) => {
+        conditionDefVal.map((m) => {
           let uiHintAttb =
             m.uiHint != undefined && m.uiHint != "" ? JSON.parse(m.uiHint) : 
"";
           if (uiHintAttb != "") {
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
index ab9b3ce88..f9fe4a38d 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
@@ -151,6 +151,8 @@ export default function PolicyPermissionItem(props) {
                   }
                 }
                 multiplePermissionItem = [...multiplePermissionItem, ...op];
+              } else {
+                multiplePermissionItem = [...srcOp];
               }
               break;
             }
@@ -498,6 +500,7 @@ export default function PolicyPermissionItem(props) {
                               </td>
                             );
                           } else {
+                            let accessTypeOptions = getAccessTypeOptions();
                             return (
                               <td key={colName} className="align-middle">
                                 <Field
@@ -509,18 +512,39 @@ export default function PolicyPermissionItem(props) {
                                       index
                                     )
                                   }
-                                  render={({ input }) => (
-                                    <div className="table-editable">
-                                      <Editable
-                                        {...input}
-                                        placement="auto"
-                                        type="checkbox"
-                                        options={getAccessTypeOptions()}
-                                        showSelectAll={true}
-                                        selectAllLabel="Select All"
-                                      />
-                                    </div>
-                                  )}
+                                  render={({ input, meta }) => {
+                                    if (
+                                      formValues[attrName][index]?.accesses &&
+                                      isArray(
+                                        formValues[attrName][index].accesses
+                                      ) &&
+                                      changePolicyItemPermissions
+                                    ) {
+                                      let accTypeVal = filter(
+                                        formValues[attrName][index].accesses,
+                                        (m) => {
+                                          if (some(accessTypeOptions, m)) {
+                                            return m;
+                                          }
+                                        }
+                                      );
+                                      if (!isEqual(input.value, accTypeVal)) {
+                                        input.onChange(accTypeVal);
+                                      }
+                                    }
+                                    return (
+                                      <div className="table-editable">
+                                        <Editable
+                                          {...input}
+                                          placement="auto"
+                                          type="checkbox"
+                                          options={accessTypeOptions}
+                                          showSelectAll={true}
+                                          selectAllLabel="Select All"
+                                        />
+                                      </div>
+                                    );
+                                  }}
                                 />
                               </td>
                             );

Reply via email to