RBAC Improvements

Caching improvements
Maker-Checker Implementation
This commit is contained in:
2026-10-21 07:27:47 +02:00
parent dee9098379
commit 5d7e2f74ce
25 changed files with 1269 additions and 309 deletions
@@ -31,6 +31,7 @@ import {
updateUserStatus,
getSystemClaims,
} from '../../services/api';
import { clearCachedUserRbac } from '../../services/roleClaimsCache';
import { HelpTooltip } from '../ui/HelpTooltip';
import { ObfuscatedIdNumber } from '../ui/ObfuscatedIdNumber';
import { decodeIdNumberHex } from '../../utils/hashids';
@@ -58,7 +59,6 @@ export const UserSecurityModal: React.FC<UserSecurityModalProps> = ({
canApprove('settings_users') ||
canApprove('tenant_management') ||
canApprove('tenant_self_service') ||
canAdd('tenant_self_service') ||
isUnrestricted;
const canManageSessions =
canApprove('settings_users') ||
@@ -129,6 +129,7 @@ export const UserSecurityModal: React.FC<UserSecurityModalProps> = ({
return assignUserRole(userId, roleId);
},
onSuccess: () => {
clearCachedUserRbac(userId);
success('Role Assigned', 'Role membership updated successfully.');
refetchUserRoles();
setSelectedRoleToAdd('');
@@ -139,6 +140,7 @@ export const UserSecurityModal: React.FC<UserSecurityModalProps> = ({
const removeRoleMutation = useMutation({
mutationFn: (roleId: string) => removeUserRole(userId, roleId),
onSuccess: () => {
clearCachedUserRbac(userId);
success('Role Removed', 'Role revoked from user.');
refetchUserRoles();
},
@@ -160,6 +162,7 @@ export const UserSecurityModal: React.FC<UserSecurityModalProps> = ({
});
},
onSuccess: () => {
clearCachedUserRbac(userId);
success('Claim Granted', 'User claim added successfully.');
refetchUserClaims();
setNewClaimType('');
@@ -171,6 +174,7 @@ export const UserSecurityModal: React.FC<UserSecurityModalProps> = ({
const deleteClaimMutation = useMutation({
mutationFn: (claimId: string | number) => deleteUserClaim(userId, claimId),
onSuccess: () => {
clearCachedUserRbac(userId);
success('Claim Revoked', 'Claim removed from user.');
refetchUserClaims();
},