31 lines
947 B
TypeScript
31 lines
947 B
TypeScript
import type { AdminRole } from '@/types/admin'
|
|
|
|
export const ADMIN_ROLE_LABELS: Record<AdminRole, string> = {
|
|
SUPER_ADMIN: '超级管理员',
|
|
ADMIN: '管理员',
|
|
OPERATIONS: '运营人员',
|
|
DEVELOPER: '开发者',
|
|
READONLY: '只读用户',
|
|
}
|
|
|
|
export const ADMIN_ROLE_COLORS: Record<AdminRole, string> = {
|
|
SUPER_ADMIN: 'red',
|
|
ADMIN: 'volcano',
|
|
OPERATIONS: 'orange',
|
|
DEVELOPER: 'blue',
|
|
READONLY: 'default',
|
|
}
|
|
|
|
export const ADMIN_ROLE_HIERARCHY: Record<AdminRole, AdminRole[]> = {
|
|
SUPER_ADMIN: ['SUPER_ADMIN', 'ADMIN', 'OPERATIONS', 'DEVELOPER', 'READONLY'],
|
|
ADMIN: ['ADMIN', 'OPERATIONS', 'DEVELOPER', 'READONLY'],
|
|
OPERATIONS: ['OPERATIONS', 'READONLY'],
|
|
DEVELOPER: ['DEVELOPER', 'READONLY'],
|
|
READONLY: ['READONLY'],
|
|
}
|
|
|
|
export function hasRole(currentRole: AdminRole | undefined, required: AdminRole): boolean {
|
|
if (!currentRole) return false
|
|
return ADMIN_ROLE_HIERARCHY[currentRole]?.includes(required) ?? false
|
|
}
|