import { prisma } from "@/prisma"; import { notFound, redirect } from 'next/navigation'; import { NavigationMenu } from "../components/navigationMenu"; import { auth } from "@/auth"; import { getUser } from "@/data/user"; import { AcceptInviteButton } from "./components/acceptInviteButton" interface RedeemPageProps { searchParams?: { invite_id?: string; }; } export default async function RedeemPage({ searchParams }: RedeemPageProps) { const invite_id = searchParams?.invite_id; if (!invite_id) { notFound(); } const invite = await prisma.invite.findUnique({ where: { id: invite_id }, }); if (!invite) { return (

This invite either expired or was revoked. Contact your organization owner.

); } const session = await auth(); let user = undefined; if (session) { user = await getUser(session.user.id); } // Auth case if (user) { if (user.email !== invite.recipientEmail) { return (

Sorry this invite does not belong to you.

) } else { const orgName = await prisma.org.findUnique({ where: { id: invite.orgId }, select: { name: true }, }); if (!orgName) { return (

Organization not found. Please contact the invite sender.

) } return (

You have been invited to org {orgName.name}

); } } else { redirect(`/login?callbackUrl=${encodeURIComponent(`/redeem?invite_id=${invite_id}`)}`); } }