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 }; }