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

@@ -18,7 +18,7 @@ import {
putAdminIntegrationSite,
} from "@/api/admin-integration-sites";
import { AdminPageCard } from "@/components/admin/admin-page-card";
import { AdminNoResourceState, AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state";
import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state";
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
import { Button } from "@/components/ui/button";
@@ -41,7 +41,7 @@ import {
TableRow,
} from "@/components/ui/table";
import { Textarea } from "@/components/ui/textarea";
import { AdminLoadingState, AdminLoadingInline, AdminTableLoadingRow } from "@/components/admin/admin-loading-state";
import { AdminLoadingState } from "@/components/admin/admin-loading-state";
import { adminHasAnyPermission } from "@/lib/admin-permissions";
import { getAdminPageBundle } from "@/lib/admin-permission-bundles";
import { useAdminProfile } from "@/stores/admin-session";
@@ -252,7 +252,7 @@ export function IntegrationSitesConsole({
} finally {
setLoading(false);
}
}, []);
}, [tRef]);
useAsyncEffect(() => {
void load();
@@ -572,6 +572,7 @@ export function IntegrationSitesConsole({
key: "connectivity",
label: t("integrationSites.connectivityTest"),
icon: Link2,
hidden: !canManage,
onClick: () => openConnectivity(row),
},
{
@@ -790,7 +791,7 @@ export function IntegrationSitesConsole({
</Button>
<Button
type="button"
disabled={connectivityBusy || connectivityPlayerId.trim() === ""}
disabled={!canManage || connectivityBusy || connectivityPlayerId.trim() === ""}
onClick={() => void runConnectivityTest()}
>
{connectivityBusy