25 lines
757 B
TypeScript
25 lines
757 B
TypeScript
export type CrmRole = 'admin' | 'editor' | 'viewer';
|
|
export const CRM_ROLES: CrmRole[] = ['admin', 'editor', 'viewer'];
|
|
|
|
export function isCrmRole(value: unknown): value is CrmRole {
|
|
return value === 'admin' || value === 'editor' || value === 'viewer';
|
|
}
|
|
|
|
/** Editors and admins may create/update records; viewers are read-only. */
|
|
export function canWrite(role: unknown): boolean {
|
|
return role === 'admin' || role === 'editor';
|
|
}
|
|
|
|
/** Only admins may delete records. */
|
|
export function canDelete(role: unknown): boolean {
|
|
return role === 'admin';
|
|
}
|
|
|
|
export function canImport(role: unknown): boolean {
|
|
return role === 'admin' || role === 'editor';
|
|
}
|
|
|
|
export function roleLabel(role: unknown): string {
|
|
return isCrmRole(role) ? role : 'viewer';
|
|
}
|