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 <[email protected]>
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 <[email protected]>
---
.../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({