feat(admin, settlement, dashboard): strengthen permission gating and billing workflows

This commit is contained in:
2026-06-09 13:44:19 +08:00
parent 7e65c53732
commit b7278e68a4
41 changed files with 900 additions and 199 deletions

View File

@@ -1,6 +1,8 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { AdminRolesConsole } from "@/modules/admin-roles/admin-roles-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_ADMIN_ROLE_MANAGE } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("adminRoles", "title");
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("adminRoles", "title");
export default function AdminRolesPage() {
return (
<ModuleScaffold>
<AdminRolesConsole />
<AdminPermissionGate requiredAny={[PRD_ADMIN_ROLE_MANAGE]}>
<AdminRolesConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,6 +1,8 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { AdminUsersConsole } from "@/modules/admin-users/admin-users-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_ADMIN_USER_MANAGE } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("adminUsers", "title");
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("adminUsers", "title");
export default function AdminUsersPage() {
return (
<ModuleScaffold>
<AdminUsersConsole />
<AdminPermissionGate requiredAny={[PRD_ADMIN_USER_MANAGE]}>
<AdminUsersConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,6 +1,8 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { AuditLogsConsole } from "@/modules/audit/audit-logs-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_AUDIT_VIEW } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("audit", "title");
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("audit", "title");
export default function AdminAuditLogsPage() {
return (
<ModuleScaffold>
<AuditLogsConsole />
<AdminPermissionGate requiredAny={[PRD_AUDIT_VIEW]}>
<AuditLogsConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,9 +1,15 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { ConfigHubScreen } from "@/modules/config/config-hub-screen";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_CONFIG_HUB_ACCESS_ANY } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("config", "hub.title");
export default function AdminConfigHubPage() {
return <ConfigHubScreen />;
return (
<AdminPermissionGate requiredAny={PRD_CONFIG_HUB_ACCESS_ANY}>
<ConfigHubScreen />
</AdminPermissionGate>
);
}

View File

@@ -1,6 +1,8 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { CurrencyManagementScreen } from "@/modules/settings/currency-management-screen";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_CURRENCY_MANAGE } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("config", "currencies.title");
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("config", "currencies.title"
export default function AdminCurrenciesPage() {
return (
<ModuleScaffold>
<CurrencyManagementScreen />
<AdminPermissionGate requiredAny={[PRD_CURRENCY_MANAGE]}>
<CurrencyManagementScreen />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

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

View File

@@ -1,9 +1,15 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { RulesOddsConfigScreen } from "@/modules/rules/rules-odds-config-screen";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_RULES_ODDS_ACCESS_ANY } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("config", "nav.rulesOddsTitle");
export default function AdminRulesOddsPage() {
return <RulesOddsConfigScreen />;
return (
<AdminPermissionGate requiredAny={PRD_RULES_ODDS_ACCESS_ANY}>
<RulesOddsConfigScreen />
</AdminPermissionGate>
);
}

View File

@@ -1,14 +1,18 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PlayConfigDocScreen } from "@/modules/config/doc/play-config-doc-screen";
import { RulesPageShell } from "@/modules/rules/rules-page-shell";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_RULES_PLAYS_ACCESS_ANY } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("config", "nav.rulesPlaysTitle");
export default function AdminRulesPlaysPage() {
return (
<RulesPageShell>
<PlayConfigDocScreen />
</RulesPageShell>
<AdminPermissionGate requiredAny={PRD_RULES_PLAYS_ACCESS_ANY}>
<RulesPageShell>
<PlayConfigDocScreen />
</RulesPageShell>
</AdminPermissionGate>
);
}

View File

@@ -1,6 +1,8 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { SystemSettingsScreen } from "@/modules/settings/system-settings-screen";
import { buildPageMetadata } from "@/lib/page-metadata";
import { PRD_SETTINGS_ACCESS_ANY } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("common", "nav.settings");
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("common", "nav.settings");
export default function AdminSettingsPage() {
return (
<ModuleScaffold>
<SystemSettingsScreen />
<AdminPermissionGate requiredAny={PRD_SETTINGS_ACCESS_ANY}>
<SystemSettingsScreen />
</AdminPermissionGate>
</ModuleScaffold>
);
}