seubert-claims/ondeck/src/lib/auth/permissions.ts
lorentz 9bb2e14151 Rename: OnDeck -> Horizon, update URL to horizon.seubert.cloud
- Update page title, metadata, sign-in header, nav bar brand name
- Update dev account emails from ondeck.local to horizon.local
- Update comments in permissions.ts and types/index.ts
- Update NEXTAUTH_URL to https://horizon.seubert.cloud
- Update systemd timer service URL and log path
2026-03-18 11:43:25 +00:00

96 lines
2.7 KiB
TypeScript

/**
* Permission definitions for Horizon application
*/
export const PERMISSIONS = {
// User management
USERS_READ: 'users.read',
USERS_WRITE: 'users.write',
USERS_DELETE: 'users.delete',
// Client management
CLIENTS_READ: 'clients.read',
CLIENTS_WRITE: 'clients.write',
CLIENTS_DELETE: 'clients.delete',
// Task management
TASKS_READ: 'tasks.read',
TASKS_WRITE: 'tasks.write',
TASKS_DELETE: 'tasks.delete',
TASKS_ASSIGN: 'tasks.assign',
// Designation management
DESIGNATIONS_READ: 'designations.read',
DESIGNATIONS_WRITE: 'designations.write',
DESIGNATIONS_DELETE: 'designations.delete',
// Template management
TEMPLATES_READ: 'templates.read',
TEMPLATES_WRITE: 'templates.write',
TEMPLATES_DELETE: 'templates.delete',
// Sync operations
SYNC_TRIGGER: 'sync.trigger',
SYNC_CONFIGURE: 'sync.configure',
// Reporting
REPORTS_VIEW: 'reports.view',
// Audit logs
AUDIT_VIEW: 'audit.view',
} as const
/**
* Role-based permission sets
*/
export const ROLE_PERMISSIONS = {
Admin: {
[PERMISSIONS.USERS_READ]: true,
[PERMISSIONS.USERS_WRITE]: true,
[PERMISSIONS.USERS_DELETE]: true,
[PERMISSIONS.CLIENTS_READ]: true,
[PERMISSIONS.CLIENTS_WRITE]: true,
[PERMISSIONS.CLIENTS_DELETE]: true,
[PERMISSIONS.TASKS_READ]: true,
[PERMISSIONS.TASKS_WRITE]: true,
[PERMISSIONS.TASKS_DELETE]: true,
[PERMISSIONS.TASKS_ASSIGN]: true,
[PERMISSIONS.DESIGNATIONS_READ]: true,
[PERMISSIONS.DESIGNATIONS_WRITE]: true,
[PERMISSIONS.DESIGNATIONS_DELETE]: true,
[PERMISSIONS.TEMPLATES_READ]: true,
[PERMISSIONS.TEMPLATES_WRITE]: true,
[PERMISSIONS.TEMPLATES_DELETE]: true,
[PERMISSIONS.SYNC_TRIGGER]: true,
[PERMISSIONS.SYNC_CONFIGURE]: true,
[PERMISSIONS.REPORTS_VIEW]: true,
[PERMISSIONS.AUDIT_VIEW]: true,
},
Manager: {
[PERMISSIONS.USERS_READ]: true,
[PERMISSIONS.CLIENTS_READ]: true,
[PERMISSIONS.CLIENTS_WRITE]: true,
[PERMISSIONS.TASKS_READ]: true,
[PERMISSIONS.TASKS_WRITE]: true,
[PERMISSIONS.TASKS_ASSIGN]: true,
[PERMISSIONS.DESIGNATIONS_READ]: true,
[PERMISSIONS.TEMPLATES_READ]: true,
[PERMISSIONS.TEMPLATES_WRITE]: true,
[PERMISSIONS.REPORTS_VIEW]: true,
},
'Account Executive': {
[PERMISSIONS.CLIENTS_READ]: true,
[PERMISSIONS.CLIENTS_WRITE]: true,
[PERMISSIONS.TASKS_READ]: true,
[PERMISSIONS.TASKS_WRITE]: true,
[PERMISSIONS.DESIGNATIONS_READ]: true,
},
Claims: {
[PERMISSIONS.CLIENTS_READ]: true,
[PERMISSIONS.TASKS_READ]: true,
[PERMISSIONS.TASKS_WRITE]: true,
},
} as const
export type RoleName = keyof typeof ROLE_PERMISSIONS
export type Permission = typeof PERMISSIONS[keyof typeof PERMISSIONS]