templates2.Admin.Nuxt/shared/rbac.ts
w4c-templates 914988e187
Some checks failed
CI / quality (push) Has been cancelled
chore(template): publish Admin.Nuxt
2026-10-11 23:25:56 +03:00

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';
}