Files
lotteryAdmin/src/lib/admin-permission-bundles.ts
kang 788c7998eb feat(integration): 为集成站点与开奖管理新增 AdminPermissionGate 权限控制
使用 AdminPermissionGate 包裹集成站点与开奖相关组件,根据权限进行访问控制。
新增集成管理与开奖管理相关权限常量。
更新相关 UI 组件以适配权限校验逻辑,提升系统安全性与用户体验。
增强国际化支持,在英文、尼泊尔语与中文语言包中新增集成相关文案。
2026-05-27 16:51:48 +08:00

42 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { PRD_INTEGRATION_MANAGE, PRD_INTEGRATION_VIEW } from "@/lib/admin-prd";
export type AdminPermissionBundleKey = "view" | "manage" | "audit" | "export" | "privilege";
export type AdminPageKey = "integration-sites";
/**
* “页面权限包”是把运营/管理员能理解的词汇(查看/管理/审核/导出/特权)
* 映射到系统真实用的 `prd.*` 权限 slug。
*
* 目前只落地 integration-sites其它页面按同样方式逐步接入。
*/
export const ADMIN_PERMISSION_BUNDLES = {
"integration-sites": {
view: [PRD_INTEGRATION_VIEW] as const,
manage: [PRD_INTEGRATION_MANAGE] as const,
audit: [] as const,
// 导出接口的资源鉴权仍落在 view/manage因此这里复用 view。
export: [PRD_INTEGRATION_VIEW] as const,
privilege: [] as const,
},
} satisfies Record<AdminPageKey, Record<AdminPermissionBundleKey, readonly string[]>>;
export const ADMIN_PAGE_REQUIRED_ANY = {
"integration-sites": [
...ADMIN_PERMISSION_BUNDLES["integration-sites"].view,
...ADMIN_PERMISSION_BUNDLES["integration-sites"].manage,
] as const,
} satisfies Record<AdminPageKey, readonly string[]>;
export function getAdminPageRequiredAny(page: AdminPageKey): readonly string[] {
return ADMIN_PAGE_REQUIRED_ANY[page];
}
export function getAdminPageBundle(
page: AdminPageKey,
bundle: AdminPermissionBundleKey,
): readonly string[] {
return ADMIN_PERMISSION_BUNDLES[page][bundle] ?? [];
}