You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by di...@apache.org on 2023/07/13 08:12:37 UTC

[ranger] branch master updated: RANGER-4132: If view policy button is clicked for a policy which is deleted, then the page gets stuck in loading state

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 9a132c5d0 RANGER-4132: If view policy button is clicked for a policy which is deleted, then the page gets stuck in loading state
9a132c5d0 is described below

commit 9a132c5d017c4f0a08837180625786a54539b758
Author: Brijesh Bhalala <br...@gmail.com>
AuthorDate: Wed Jul 12 14:57:44 2023 +0530

    RANGER-4132: If view policy button is clicked for a policy which is deleted, then the page gets stuck in loading state
    
    Signed-off-by: Dineshkumar Yadav <di...@outlook.com>
---
 .../main/java/org/apache/ranger/biz/XUserMgr.java  |  8 ++++++
 .../org/apache/ranger/common/RESTErrorUtil.java    | 31 ++++++++++++++++++++++
 .../main/java/org/apache/ranger/rest/RoleREST.java |  6 ++++-
 .../org/apache/ranger/rest/SecurityZoneREST.java   |  5 +++-
 .../java/org/apache/ranger/rest/ServiceREST.java   |  5 +++-
 .../main/webapp/react-webapp/src/utils/fetchAPI.js |  2 --
 .../src/views/AuditEvent/AdminLogs/PolicyLogs.jsx  |  4 ++-
 .../AuditEvent/AdminLogs/PolicyViewDetails.jsx     | 10 +++----
 .../views/PolicyListing/AddUpdatePolicyForm.jsx    |  2 +-
 .../users_details/EditUserView.jsx                 |  2 +-
 10 files changed, 62 insertions(+), 13 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
index f653dbc8a..09154491d 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
@@ -2031,6 +2031,10 @@ public class XUserMgr extends XUserMgrBase {
 		xaBizUtil.blockAuditorRoleUser();
 		XXGroupDao xXGroupDao = daoManager.getXXGroup();
 		XXGroup xXGroup = xXGroupDao.getById(id);
+		if (xXGroup == null) {
+			throw restErrorUtil.create404RESTException("Data Not Found for given Id", MessageEnums.DATA_NOT_FOUND, id,
+					null, "readResource : No Object found with given id.");
+		}
 		VXGroup vXGroup = xGroupService.populateViewBean(xXGroup);
 		if (vXGroup == null || StringUtils.isEmpty(vXGroup.getName())) {
 			throw restErrorUtil.createRESTException("Group ID doesn't exist.", MessageEnums.INVALID_INPUT_DATA);
@@ -2249,6 +2253,10 @@ public class XUserMgr extends XUserMgrBase {
 		xaBizUtil.blockAuditorRoleUser();
 		XXUserDao xXUserDao = daoManager.getXXUser();
 		XXUser xXUser =	xXUserDao.getById(id);
+		if (xXUser == null) {
+			throw restErrorUtil.create404RESTException("Data Not Found for given Id", MessageEnums.DATA_NOT_FOUND, id,
+					null, "readResource : No Object found with given id.");
+		}
 		VXUser vXUser =	xUserService.populateViewBean(xXUser);
 		if(vXUser==null || StringUtils.isEmpty(vXUser.getName())){
 			throw restErrorUtil.createRESTException("No user found with id=" + id);
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RESTErrorUtil.java b/security-admin/src/main/java/org/apache/ranger/common/RESTErrorUtil.java
index e0ff95814..4aaf36442 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RESTErrorUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RESTErrorUtil.java
@@ -413,4 +413,35 @@ public class RESTErrorUtil {
 				restException);
 		return restException;
 	}
+
+	public WebApplicationException create404RESTException(String errorMessage,
+			MessageEnums messageEnum, Long objectId, String fieldName,
+			String logMessage) {
+		List<VXMessage> messageList = new ArrayList<VXMessage>();
+		messageList.add(messageEnum.getMessage(objectId, fieldName));
+
+		VXResponse gjResponse = new VXResponse();
+		gjResponse.setStatusCode(VXResponse.STATUS_ERROR);
+		gjResponse.setMsgDesc(errorMessage);
+		gjResponse.setMessageList(messageList);
+
+		Response errorResponse = Response
+				.status(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND)
+				.entity(gjResponse).build();
+
+		WebApplicationException restException = new WebApplicationException(
+				errorResponse);
+		restException.fillInStackTrace();
+		UserSessionBase userSession = ContextUtil.getCurrentUserSession();
+		String loginId = null;
+		if (userSession != null) {
+			loginId = userSession.getLoginId();
+		}
+
+		logger.info("Request failed. loginId="
+				+ loginId + ", logMessage=" + gjResponse.getMsgDesc(),
+				restException);
+
+		return restException;
+	}
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java b/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
index a4dd6ef89..ca9f286b3 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
@@ -53,6 +53,7 @@ import org.apache.ranger.common.UserSessionBase;
 import org.apache.ranger.common.PropertiesUtil;
 import org.apache.ranger.common.AppConstants;
 import org.apache.ranger.common.ContextUtil;
+import org.apache.ranger.common.MessageEnums;
 import org.apache.ranger.db.RangerDaoManager;
 import org.apache.ranger.entity.XXService;
 import org.apache.ranger.entity.XXServiceDef;
@@ -287,7 +288,10 @@ public class RoleREST {
         } catch(Throwable excp) {
             LOG.error("deleteRole(" + roleId + ") failed", excp);
 
-            throw restErrorUtil.createRESTException(excp.getMessage());
+            throw restErrorUtil.createRESTException(
+					"Data Not Found for given Id",
+					MessageEnums.DATA_NOT_FOUND, roleId, null,
+					"readResource : No Object found with given id.");
         }
         if (LOG.isDebugEnabled()) {
             LOG.debug("<== deleteRole(id=" + roleId + ")");
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/SecurityZoneREST.java b/security-admin/src/main/java/org/apache/ranger/rest/SecurityZoneREST.java
index 66fa22163..55d6aaac5 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/SecurityZoneREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/SecurityZoneREST.java
@@ -241,7 +241,10 @@ public class SecurityZoneREST {
         } catch(Throwable excp) {
             LOG.error("deleteSecurityZone(" + zoneId + ") failed", excp);
 
-            throw restErrorUtil.createRESTException(excp.getMessage());
+            throw restErrorUtil.createRESTException(
+					"Data Not Found for given Id",
+					MessageEnums.DATA_NOT_FOUND, zoneId, null,
+					"readResource : No Object found with given id.");
         }
         if (LOG.isDebugEnabled()) {
             LOG.debug("<== deleteSecurityZone(id=" + zoneId + ")");
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index ce26b1d66..a307293eb 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -4569,7 +4569,10 @@ public class ServiceREST {
 					svcStore.deleteService(id);
 				} else {
 					LOG.error("Cannot retrieve service:[" + id + "] for deletion");
-					throw new Exception("deleteService(" + id + ") failed");
+					throw restErrorUtil.createRESTException(
+							"Data Not Found for given Id",
+							MessageEnums.DATA_NOT_FOUND, id, null,
+							"readResource : No Object found with given id.");
 				}
 			} else {
 				LOG.error("Cannot retrieve user session.");
diff --git a/security-admin/src/main/webapp/react-webapp/src/utils/fetchAPI.js b/security-admin/src/main/webapp/react-webapp/src/utils/fetchAPI.js
index 5d9a7d5c4..ef32634bb 100644
--- a/security-admin/src/main/webapp/react-webapp/src/utils/fetchAPI.js
+++ b/security-admin/src/main/webapp/react-webapp/src/utils/fetchAPI.js
@@ -97,11 +97,9 @@ async function fetchApi(axiosConfig = {}, otherConf = {}) {
     }
     if (error?.response?.status === 404) {
       navigateTo.navigate("/pageNotFound", { replace: true });
-      return;
     }
     if (error?.response?.status === 403) {
       navigateTo.navigate("/forbidden", { replace: true });
-      return;
     }
     throw error;
   }
diff --git a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyLogs.jsx b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyLogs.jsx
index abb58c94d..9c81e307d 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyLogs.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyLogs.jsx
@@ -1867,7 +1867,9 @@ export const PolicyLogs = ({ data, reportdata }) => {
               </Badge>
             </div>
             <div className="font-weight-bolder">Policy Name: {objectName}</div>
-            <div className="font-weight-bolder">Service Name: {owner}</div>
+            <div className="font-weight-bolder">
+              Service Name: {parentObjectName}
+            </div>
             <div className="font-weight-bolder">
               Created Date: {dateFormat(createDate, "mm/dd/yyyy hh:MM:ss TT ")}
               India Standard Time
diff --git a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyViewDetails.jsx b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyViewDetails.jsx
index d74f9a83e..1f89900eb 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyViewDetails.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs/PolicyViewDetails.jsx
@@ -76,10 +76,10 @@ export function PolicyViewDetails(props) {
     } catch (error) {
       console.error(`eventTime can not be undefined ${error}`);
     }
-    accessLogsServiceDef = allServiceDefs.find((servicedef) => {
-      return servicedef.name == accesslogs.data.serviceType;
+    accessLogsServiceDef = allServiceDefs?.find((servicedef) => {
+      return servicedef.name == accesslogs?.data?.serviceType;
     });
-    setAccess(accesslogs.data);
+    setAccess(accesslogs?.data);
     setServiceDef(accessLogsServiceDef);
     SetLoader(false);
   };
@@ -95,7 +95,7 @@ export function PolicyViewDetails(props) {
     } catch (error) {
       console.error(`versionNo can not be undefined ${error}`);
     }
-    setAccess(accesslogs.data);
+    setAccess(accesslogs?.data);
   };
 
   const fetchPolicyVersions = async () => {
@@ -115,7 +115,7 @@ export function PolicyViewDetails(props) {
       );
       serverError(error);
     }
-    setAccess(accesslogs && accesslogs.data);
+    setAccess(accesslogs?.data);
   };
 
   const {
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 cc34488ea..13a8eaf4f 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
@@ -256,7 +256,7 @@ export default function AddUpdatePolicyForm(props) {
       });
       data = resp.data || null;
     } catch (error) {
-      console.error(`Error occurred while fetching service details ! ${error}`);
+      console.error(`Error occurred while fetching policy details ! ${error}`);
     }
     return data;
   };
diff --git a/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/EditUserView.jsx b/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/EditUserView.jsx
index e47fccc6f..73585458a 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/EditUserView.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/EditUserView.jsx
@@ -79,7 +79,7 @@ function AddUserView(props) {
       });
     } catch (error) {
       console.error(
-        `Error occurred while fetching Zones or CSRF headers! ${error}`
+        `Error occurred while fetching Users or CSRF headers! ${error}`
       );
     }
     dispatch({