21 lines
652 B
TypeScript
21 lines
652 B
TypeScript
export type StaffRole = 'admin' | 'editor';
|
|
|
|
/** Anyone who may enter the content admin (authoring UI). */
|
|
export function isStaffRole(value: unknown): value is StaffRole {
|
|
return value === 'admin' || value === 'editor';
|
|
}
|
|
|
|
/** Admins and editors may author posts and docs; everyone else is read-only. */
|
|
export function canAuthor(value: unknown): boolean {
|
|
return value === 'admin' || value === 'editor';
|
|
}
|
|
|
|
/** Only admins may delete published content. */
|
|
export function canDelete(value: unknown): boolean {
|
|
return value === 'admin';
|
|
}
|
|
|
|
export function roleLabel(value: unknown): string {
|
|
return canAuthor(value) ? String(value) : 'user';
|
|
}
|