This commit is contained in:
@@ -174,7 +174,16 @@ export default async function DashboardPage() {
|
||||
(t) => t.metadata.labels?.["pieced.ch/zitadel-org-id"] === user.orgId
|
||||
);
|
||||
const inflightRequests = orgRequests.filter(
|
||||
(r) => !r.tenantName || !orgScopedTenants.some((t) => t.metadata.name === r.tenantName)
|
||||
(r) =>
|
||||
// Only show provision (initial creation) requests on the
|
||||
// dashboard. Resume requests (Bug 37a) belong with their
|
||||
// specific tenant — the SubscriptionToggle on the tenant
|
||||
// detail page renders the pending state there. Showing them
|
||||
// on the dashboard too would duplicate the surface and
|
||||
// confuse customers about which tenant they refer to.
|
||||
r.requestType !== "resume" &&
|
||||
(!r.tenantName ||
|
||||
!orgScopedTenants.some((t) => t.metadata.name === r.tenantName))
|
||||
);
|
||||
|
||||
// Slice 5: only owners (and platform users, who'd typically be using
|
||||
|
||||
@@ -3,6 +3,7 @@ import { getTranslations, getFormatter } from "next-intl/server";
|
||||
import { redirect, notFound } from "next/navigation";
|
||||
import { getTenant } from "@/lib/k8s";
|
||||
import { canUserSeeTenant } from "@/lib/visibility";
|
||||
import { getPendingResumeRequestForTenant } from "@/lib/db";
|
||||
import { StatusBadge } from "@/components/ui/status-badge";
|
||||
import { WarningBadge } from "@/components/ui/warning-badge";
|
||||
import { UsageDisplay } from "@/components/dashboard/usage-display";
|
||||
@@ -47,6 +48,13 @@ export default async function TenantDetailPage({
|
||||
// The current state comes from spec.suspend on the CR.
|
||||
const isSuspended = Boolean(tenant.spec.suspend);
|
||||
|
||||
// Bug 37a: when the tenant is suspended, an owner can request
|
||||
// reactivation (admin-gated). Look up whether one is in flight so
|
||||
// the SubscriptionToggle can render the right state.
|
||||
const pendingResumeRequest = isSuspended
|
||||
? await getPendingResumeRequestForTenant(name)
|
||||
: null;
|
||||
|
||||
// Bug 7: assigned-users panel is meaningless for personal tenants
|
||||
// (sole-owner by definition; the only "assignee" is the owner
|
||||
// themselves). We hide the panel when EITHER the CR carries the
|
||||
@@ -208,7 +216,19 @@ export default async function TenantDetailPage({
|
||||
? t("subscriptionDescriptionSuspended")
|
||||
: t("subscriptionDescriptionActive")}
|
||||
</p>
|
||||
<SubscriptionToggle tenantName={name} suspended={isSuspended} />
|
||||
<SubscriptionToggle
|
||||
tenantName={name}
|
||||
suspended={isSuspended}
|
||||
isPlatform={user.isPlatform}
|
||||
pendingResumeRequest={
|
||||
pendingResumeRequest
|
||||
? {
|
||||
id: pendingResumeRequest.id,
|
||||
createdAt: pendingResumeRequest.createdAt,
|
||||
}
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</section>
|
||||
)}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user