From 65c29bf0bb3bdf50fa5bcb7fa81a869bd184e03f Mon Sep 17 00:00:00 2001
From: Omkar Kesarkhane <127078473+omkarK06@users.noreply.github.com>
Date: Tue, 19 Aug 2025 11:21:17 +0530
Subject: [PATCH] fix: UI getting blocked when rendering roles of deleted
entities (#8038)
### **PR Type**
Bug fix
___
### **Description**
Prevent null resource access in entity fetch
Preserve and gate 'org' permissions correctly
Minor formatting cleanup in template
Ensure permissions list always updated safely
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["EditRole.vue UI"] -- triggers --> getResourceEntities["getResourceEntities(resource)"]
getResourceEntities -- "guard: if !resource return" --> SafeReturn["Resolve(true)"]
setPermission["setPermission(...)"] -- "modify + checks" --> permissionsState["permissionsState.permissions"]
setPermission -- "skip non-meta org 'org' resource" --> GuardedPush["Conditional push"]
```
File Walkthrough
| Relevant
files |
|---|
| Bug
fix |
EditRole.vueGuard missing resources
and refine permission push
web/src/components/iam/roles/EditRole.vue
- Add null-check guard in
getResourceEntities
- Keep 'org' permission push with clearer formatting
- Ensure
conditional skip for non-meta org remains
- Minor template
formatting adjustment
|
+11/-7
|
|
___
---
web/src/components/iam/roles/EditRole.vue | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/web/src/components/iam/roles/EditRole.vue b/web/src/components/iam/roles/EditRole.vue
index 545d8cc17c..fd1ad9e2ed 100644
--- a/web/src/components/iam/roles/EditRole.vue
+++ b/web/src/components/iam/roles/EditRole.vue
@@ -191,9 +191,7 @@ along with this program. If not, see .
-
+
) => {
}
modifyResourcePermissions(resourcePermission);
- if (resourcePermission.name === 'org' && store.state.selectedOrganization.identifier !== store.state.zoConfig.meta_org) {
- return; // Skip adding 'org' resource if the organization is not _meta
- }
- permissionsState.permissions.push(resourcePermission as Resource);
+ if (
+ resourcePermission.name === "org" &&
+ store.state.selectedOrganization.identifier !==
+ store.state.zoConfig.meta_org
+ ) {
+ return; // Skip adding 'org' resource if the organization is not _meta
+ }
+ permissionsState.permissions.push(resourcePermission as Resource);
};
const setDefaultPermissions = () => {
@@ -1337,6 +1339,8 @@ const getPermissionHash = (
* @param typeOf - Type to assign the new entities that we get from the server
*/
const getResourceEntities = (resource: Resource | Entity) => {
+ if (!resource) return Promise.resolve(true);
+
const listEntitiesFnMap: {
[key: string]: (resource: Resource | Entity) => Promise;
} = {