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

dhavalshah9131 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 68fbff5be5acf609fa0a4c7252b8455931f98a10
Author: Brijesh Bhalala <brijeshbhalala2...@gmail.com>
AuthorDate: Wed Oct 25 15:46:01 2023 +0530

    RANGER-4376: Need to show Tag Policies for user when it has permission in 
Tag Based Policies module
---
 .../src/main/webapp/react-webapp/src/App.jsx       | 49 ++++++++++------------
 .../src/views/PermissionsModule/EditPermission.jsx |  9 +++-
 .../src/views/Reports/UserAccessLayout.jsx         |  4 +-
 3 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/security-admin/src/main/webapp/react-webapp/src/App.jsx 
b/security-admin/src/main/webapp/react-webapp/src/App.jsx
index bc3cf9a7a..ef5f6f3c9 100644
--- a/security-admin/src/main/webapp/react-webapp/src/App.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/App.jsx
@@ -21,15 +21,14 @@ import React, { Suspense, lazy, Component } from "react";
 import { Route, Routes, HashRouter } from "react-router-dom";
 import { ToastContainer } from "react-toastify";
 import axios from "axios";
-
+import { hasAccessToTab, isUser } from "./utils/XAUtils";
 import ErrorBoundary from "Views/ErrorBoundary";
 import ErrorPage from "./views/ErrorPage";
 import { CommonScrollButton, Loader } from 
"../src/components/CommonComponents";
 import history from "Utils/history";
-import { getUserProfile, setUserProfile } from "Utils/appState";
+import { setUserProfile, setServiceDef } from "Utils/appState";
 import LayoutComp from "Views/Layout";
-import { getServiceDef, setServiceDef } from "./utils/appState";
-import { filter, sortBy } from "lodash";
+import { filter, sortBy, has } from "lodash";
 
 const HomeComp = lazy(() => import("Views/Home"));
 const ServiceFormComp = lazy(() => import("Views/ServiceManager/ServiceForm"));
@@ -110,14 +109,7 @@ export default class App extends Component {
         window.location.hostname +
         (window.location.port ? ":" + window.location.port : "");
     }
-    // Proxy URL for Ranger UI doesn't work without trailing slash so add slash
-    // let pathName = /\/[\w-]+.(jsp|html)/;
-    // if (
-    //   !pathName.test(window.location.pathname) &&
-    //   window.location.pathname.slice(-1) !== "/"
-    // ) {
-    //   window.location.pathname += "/";
-    // }
+
     let baseUrl =
       window.location.origin +
       window.location.pathname.substr(
@@ -139,6 +131,8 @@ export default class App extends Component {
     let getServiceDefData = [];
     let resourceServiceDef = [];
     let tagServiceDef = [];
+    let serviceDefUrl = "plugins/definitions";
+
     try {
       const { fetchApi, fetchCSRFConf } = await import("Utils/fetchAPI");
       fetchCSRFConf();
@@ -153,30 +147,33 @@ export default class App extends Component {
         `Error occurred while fetching profile or CSRF headers! ${error}`
       );
     }
+
+    if (hasAccessToTab("Resource Based Policies")) {
+      serviceDefUrl = "plugins/definitions";
+    } else if (hasAccessToTab("Tag Based Policies") && isUser()) {
+      serviceDefUrl = "plugins/definitions/name/tag";
+    }
+
     try {
       const { fetchApi } = await import("Utils/fetchAPI");
       getServiceDefData = await fetchApi({
-        url: `plugins/definitions`
+        url: serviceDefUrl
       });
 
-      tagServiceDef = sortBy(
-        filter(getServiceDefData.data.serviceDefs, ["name", "tag"]),
-        "id"
-      );
+      if (has(getServiceDefData.data, "serviceDefs")) {
+        getServiceDefData = getServiceDefData.data.serviceDefs;
+      } else {
+        getServiceDefData = [getServiceDefData.data];
+      }
+
+      tagServiceDef = sortBy(filter(getServiceDefData, ["name", "tag"]), "id");
 
       resourceServiceDef = sortBy(
-        filter(
-          getServiceDefData.data.serviceDefs,
-          (serviceDef) => serviceDef.name !== "tag"
-        ),
+        filter(getServiceDefData, (serviceDef) => serviceDef.name !== "tag"),
         "id"
       );
 
-      setServiceDef(
-        resourceServiceDef,
-        tagServiceDef,
-        getServiceDefData.data.serviceDefs
-      );
+      setServiceDef(resourceServiceDef, tagServiceDef, getServiceDefData);
     } catch (error) {
       console.error(
         `Error occurred while fetching serviceDef details ! ${error}`
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
index 5e51faf27..e0953008a 100755
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
@@ -266,7 +266,7 @@ const EditPermission = () => {
   const fetchUsers = async (inputValue) => {
     let params = { isVisible: 1 };
     let usersOp = [];
-
+    let notAllowedRoles = ["ROLE_KEY_ADMIN", "ROLE_KEY_ADMIN_AUDITOR"];
     if (inputValue) {
       params["name"] = inputValue || "";
     }
@@ -276,7 +276,12 @@ const EditPermission = () => {
         url: "xusers/users",
         params: params
       });
-      usersOp = userResp.data?.vXUsers;
+      usersOp =
+        permissionData.module == "Tag Based Policies"
+          ? userResp.data?.vXUsers.filter(
+              (users) => !notAllowedRoles.includes(users.userRoleList[0])
+            )
+          : userResp.data?.vXUsers;
     } catch (error) {
       console.error(`Error occurred while fetching Users ! ${error}`);
       serverError(error);
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
index 0d25d6aeb..19629d6aa 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
@@ -121,7 +121,7 @@ function UserAccessLayout() {
     }
 
     let resourceServiceDefs = filter(
-      serviceDefsResp.data.serviceDefs,
+      serviceDefsResp?.data?.serviceDefs,
       (serviceDef) =>
         isKMSRole ? serviceDef.name == "kms" : serviceDef.name != "kms"
     );
@@ -139,7 +139,7 @@ function UserAccessLayout() {
     }
 
     let serviceDefsList = map(
-      serviceDefsResp.data.serviceDefs,
+      serviceDefsResp?.data?.serviceDefs,
       function (serviceDef) {
         return { value: serviceDef.name, label: serviceDef.name };
       }

Reply via email to