import type { Metadata } from "next"; import Link from "next/link"; import { prisma } from "@/lib/db/prisma"; import { validateInvitationToken } from "@/services/staff/staff-invitation.service"; import { AcceptInvitationForm } from "@/features/auth/components/accept-invitation-form"; export const metadata: Metadata = { title: "Accept Invitation" }; export const dynamic = "force-dynamic"; export default async function AcceptInvitationPage({ searchParams, }: { searchParams: Promise<{ token?: string }>; }) { const { token } = await searchParams; if (!token) { return ; } const check = await validateInvitationToken(prisma, token); if (!check.valid) { const message = check.reason === "EXPIRED" ? "This invitation link has expired. Ask an administrator to send you a new one." : check.reason === "ALREADY_ACCEPTED" ? "This invitation has already been used." : "This invitation link isn't valid."; return ; } if (!check.invitation.staff.user.email) { return ; } return (

Welcome, {check.invitation.staff.user.name}

Finish setting up your staff account.

); } function InvalidInvitation({ message }: { message: string }) { return (

Invitation Not Available

{message}

Go to Sign In
); }