Files
electric-cherry/src/lib/auth.ts
T
2026-10-11 23:30:40 -04:00

36 lines
991 B
TypeScript

export type UserRole = 'admin' | 'super_viewer' | 'operator' | 'viewer';
/** Reserved identity for work requested by the controller. */
export const systemUsername = 'Maxis';
export interface AuthUser {
id: string;
username: string;
displayName: string;
role: UserRole;
disabled: boolean;
mustChangePassword: boolean;
createdAt: string;
updatedAt: string;
lastLoginAt: string | null;
}
export const roleLabels: Record<UserRole, string> = {
admin: 'Administrator',
super_viewer: 'Super Viewer',
operator: 'Operator',
viewer: 'Viewer'
};
export function canOperate(role: UserRole | null | undefined): boolean {
return role === 'admin' || role === 'operator';
}
export function canReadAdmin(role: UserRole | null | undefined): boolean {
return role === 'admin' || role === 'super_viewer';
}
export function canReadSensitive(role: UserRole | null | undefined): boolean {
return canOperate(role) || role === 'super_viewer';
}