← back to Govarbitrage

src/app/api/newsletter/confirm/route.ts

31 lines

import { NextRequest } from "next/server";
import { prisma } from "@/lib/db";
import { resultPage } from "../result-page";

export const dynamic = "force-dynamic";

export async function GET(req: NextRequest) {
  const token = req.nextUrl.searchParams.get("token") || "";
  if (!token) {
    return resultPage(400, "Missing link", "This confirmation link is incomplete. Please use the link from your email.");
  }

  const sub = await prisma.subscriber.findUnique({ where: { confirmToken: token } });
  if (!sub) {
    return resultPage(404, "Link not recognized", "This confirmation link is invalid or has been superseded by a newer one. Re-subscribe to get a fresh link.");
  }

  if (sub.status !== "CONFIRMED") {
    await prisma.subscriber.update({
      where: { id: sub.id },
      data: { status: "CONFIRMED", confirmedAt: new Date() },
    });
  }

  return resultPage(
    200,
    "You're subscribed",
    "Your email is confirmed. The Top-10 government-surplus deals digest will arrive twice daily (6am & 5pm PT). Every digest includes a one-click unsubscribe link.",
  );
}