

























config/roles.ts 配置层 ─ 定义"谁"
└─ UserType / TYPE_HIERARCHY / TYPE_META / hasRole()
config/routes.ts 配置层 ─ 定义"哪些页面"
└─ PageDef[] / renderRoutes() / deriveSidebar() / validateRoutes()
│
App.tsx 生成层 ─ 自动生成 <Route> 树
AdminSidebar 生成层 ─ 自动生成侧边栏菜单
UserSidebar / DeveloperSidebar 同上
RequireAuth / AdminGuard 权限路由守卫
核心原则:两处配置,全自动联动。
roles.tsroutes.tsconfig/roles.ts)export const USER_TYPES = ['user', 'developer', 'admin'] as const;
export type UserType = (typeof USER_TYPES)[number];
export const TYPE_HIERARCHY: Record<UserType, number> = {
user: 0, // 普通用户
developer: 1, // 开发者(自动拥有 user 权限)
admin: 2, // 管理员(自动拥有 developer + user 权限)
};
层级递进逻辑:admin > developer > user。hasRole('admin', 'developer') 返回 true。
export const TYPE_META: Record<UserType, TypeMeta> = {
user: { label: '普通用户', shortLabel: '用户', color: 'bg-gray-100...', icon: 'fa-user' },
developer: { label: '开发者', shortLabel: '开发者', color: 'bg-emerald-100...', icon: 'fa-code' },
admin: { label: '管理员', shortLabel: '管理员', color: 'bg-blue-100...', icon: 'fa-shield-alt' },
};
hasRole(userType, 'admin') // user?.type === 'admin'
hasRole(userType, 'developer') // user?.type === 'developer' || 'admin'
isAdmin(userType) // 快捷方式
isDeveloper(userType) // 快捷方式
用户在 Navbar 下拉菜单看到的额外入口:
NAVBAR_ROLE_LINKS: [
{ path: '/admin', icon: 'fa-shield-alt', label: '后台管理', minType: 'admin' },
{ path: '/developer', icon: 'fa-code', label: '开发者中心', minType: 'developer' },
]
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。