access control by role plus by person in orgsettings

This commit is contained in:
Satyam Rastogi
2026-05-14 18:13:42 +05:30
parent 45301dbabd
commit 72be14369e
4 changed files with 388 additions and 6 deletions
+19
View File
@@ -5048,6 +5048,10 @@ export const MockStoreProvider = ({ children }) => {
subcontractor_tasks: { label: 'Subcontractor Tasks', actions: ['view','assign','receive'] },
};
// Per-user permission overrides: grant or deny specific module+action regardless of role
// Shape: [{ userId, moduleKey, action, effect: 'grant' | 'deny' }]
const [userPermissionOverrides, setUserPermissionOverrides] = useState([]);
const [roleCommissionOverrides, setRoleCommissionOverrides] = useState([
{ roleKey: 'SALES_REP', enabled: true, type: 'percent_net', rate: 5 },
{ roleKey: 'CANVASSER', enabled: true, type: 'flat', rate: 300 },
@@ -5306,6 +5310,21 @@ export const MockStoreProvider = ({ children }) => {
[moduleKey]: { ...prev[moduleKey], [roleKey]: actions },
}));
},
userPermissionOverrides,
setUserPermissionOverride: (userId, moduleKey, action, effect) => {
setUserPermissionOverrides(prev => {
const filtered = prev.filter(o => !(o.userId === userId && o.moduleKey === moduleKey && o.action === action));
return [...filtered, { userId, moduleKey, action, effect }];
});
},
removeUserPermissionOverride: (userId, moduleKey, action) => {
setUserPermissionOverrides(prev =>
prev.filter(o => !(o.userId === userId && o.moduleKey === moduleKey && o.action === action))
);
},
clearUserPermissionOverrides: (userId) => {
setUserPermissionOverrides(prev => prev.filter(o => o.userId !== userId));
},
roleCommissionOverrides,
setRoleCommissionOverride: (override) => {
setRoleCommissionOverrides(prev => {