| 123456789101112 |
- // One policy for the administrative and operational gateways. Legacy admin means
- // company operations manager, never cross-company super administrator.
- function adminRoleSnapshot(current) {
- const read = key => typeof current.get === 'function' ? current.get(key) : current[key];
- const roles = Array.isArray(read('roles')) ? read('roles').map(String) : [];
- const key = String(read('adminRoleKey') || '');
- const valid = ['super-admin','ops-manager','ops-staff','ops-auditor'];
- let role = valid.includes(key) ? key : valid.find(value => roles.includes(value)) || '';
- const legacy = read('isAdmin') === true || read('role') === 'admin' || roles.includes('admin');
- if (!role && !key && !roles.some(value => value.startsWith('ops-')) && legacy) role = 'ops-manager';
- return {roles:role ? [...new Set([...roles.filter(value=>!valid.includes(value)),role])] : roles,isSuperAdmin:role==='super-admin',operationsRole:role==='super-admin'?'ops-manager':role||'denied',roleKey:role,legacyRole:role==='ops-manager'&&!key&&!roles.some(value=>valid.includes(value)),isAdmin:Boolean(role)||legacy};
- }
|