feat(integration): 为集成站点与开奖管理新增 AdminPermissionGate 权限控制

使用 AdminPermissionGate 包裹集成站点与开奖相关组件,根据权限进行访问控制。
新增集成管理与开奖管理相关权限常量。
更新相关 UI 组件以适配权限校验逻辑,提升系统安全性与用户体验。
增强国际化支持,在英文、尼泊尔语与中文语言包中新增集成相关文案。
This commit is contained in:
2026-05-27 16:51:48 +08:00
parent 5eabbcf0ee
commit 788c7998eb
24 changed files with 276 additions and 64 deletions

View File

@@ -0,0 +1,41 @@
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] ?? [];
}