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

@@ -1,6 +1,8 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { IntegrationSitesConsole } from "@/modules/integration/integration-sites-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_INTEGRATION_ACCESS_ANY } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("config", "integrationSites.title");
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("config", "integrationSites.
export default function AdminIntegrationSitesPage() {
return (
<ModuleScaffold>
<IntegrationSitesConsole />
<AdminPermissionGate requiredAny={PRD_INTEGRATION_ACCESS_ANY}>
<IntegrationSitesConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,4 +1,6 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { DrawFinanceConsole } from "@/modules/draws/draw-finance-console";
import { PRD_DRAW_ACCESS_ANY } from "@/lib/admin-prd";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -8,5 +10,9 @@ export default async function AdminDrawFinancePage(props: {
params: Promise<{ drawId: string }>;
}) {
const { drawId } = await props.params;
return <DrawFinanceConsole drawId={drawId} />;
return (
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
<DrawFinanceConsole drawId={drawId} />
</AdminPermissionGate>
);
}

View File

@@ -1,8 +1,14 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { DrawDetailConsole } from "@/modules/draws/draw-detail-console";
import { PRD_DRAW_ACCESS_ANY } from "@/lib/admin-prd";
export default async function AdminDrawDetailPage(props: {
params: Promise<{ drawId: string }>;
}) {
const { drawId } = await props.params;
return <DrawDetailConsole drawId={drawId} />;
return (
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
<DrawDetailConsole drawId={drawId} />
</AdminPermissionGate>
);
}

View File

@@ -1,8 +1,14 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { DrawResultsConsole } from "@/modules/draws/draw-results-console";
import { PRD_DRAW_ACCESS_ANY } from "@/lib/admin-prd";
export default async function AdminDrawResultsPage(props: {
params: Promise<{ drawId: string }>;
}) {
const { drawId } = await props.params;
return <DrawResultsConsole drawId={drawId} />;
return (
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
<DrawResultsConsole drawId={drawId} />
</AdminPermissionGate>
);
}

View File

@@ -1,8 +1,14 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { DrawReviewConsole } from "@/modules/draws/draw-review-console";
import { PRD_DRAW_ACCESS_ANY } from "@/lib/admin-prd";
export default async function AdminDrawReviewPage(props: {
params: Promise<{ drawId: string }>;
}) {
const { drawId } = await props.params;
return <DrawReviewConsole drawId={drawId} />;
return (
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
<DrawReviewConsole drawId={drawId} />
</AdminPermissionGate>
);
}

View File

@@ -1,5 +1,7 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { DrawsIndexConsole } from "@/modules/draws/draws-index-console";
import { PRD_DRAW_ACCESS_ANY } from "@/lib/admin-prd";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -7,8 +9,10 @@ export const metadata: Metadata = buildPageMetadata("draws", "statusListTitle");
export default function AdminDrawsPage() {
return (
<ModuleScaffold>
<DrawsIndexConsole />
</ModuleScaffold>
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
<ModuleScaffold>
<DrawsIndexConsole />
</ModuleScaffold>
</AdminPermissionGate>
);
}

View File

@@ -1,5 +1,7 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { InvalidSettlementBatchId } from "@/modules/settlement/invalid-settlement-batch-id";
import { SettlementBatchDetailsConsole } from "@/modules/settlement/settlement-batch-details-console";
import { PRD_PAYOUT_ACCESS_ANY } from "@/lib/admin-prd";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -14,5 +16,9 @@ export default async function AdminSettlementBatchDetailsPage(props: {
return <InvalidSettlementBatchId />;
}
return <SettlementBatchDetailsConsole batchId={id} />;
return (
<AdminPermissionGate requiredAny={PRD_PAYOUT_ACCESS_ANY}>
<SettlementBatchDetailsConsole batchId={id} />
</AdminPermissionGate>
);
}

View File

@@ -1,9 +1,15 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { SettlementBatchesConsole } from "@/modules/settlement/settlement-batches-console";
import { PRD_PAYOUT_ACCESS_ANY } from "@/lib/admin-prd";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("settlement", "batchList");
export default function AdminSettlementBatchesPage() {
return <SettlementBatchesConsole />;
return (
<AdminPermissionGate requiredAny={PRD_PAYOUT_ACCESS_ANY}>
<SettlementBatchesConsole />
</AdminPermissionGate>
);
}