使用 AdminPermissionGate 包裹集成站点与开奖相关组件,根据权限进行访问控制。 新增集成管理与开奖管理相关权限常量。 更新相关 UI 组件以适配权限校验逻辑,提升系统安全性与用户体验。 增强国际化支持,在英文、尼泊尔语与中文语言包中新增集成相关文案。
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
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] ?? [];
|
||
}
|
||
|