import { NextResponse } from "next/server";

import { conferirChave } from "@/lib/digitais/servidor/acessos";
import { COOKIE_DA_PREVIA } from "@/lib/digitais/servidor/curso";
import { resolvePublicOrigin } from "@/lib/request-origin";
import { createAdminClient } from "@/lib/supabase-admin";

/*
 * "Ver como aluno" (link de 2 horas que o painel cria): a chave vira um
 * cookie só HTTP e a equipe abre o curso na área de membros, só para olhar.
 */
export async function GET(request: Request, { params }: { params: Promise<{ slug: string; chave: string }> }) {
  const { slug, chave } = await params;
  const origem = resolvePublicOrigin(request);
  const curso = String(new URL(request.url).searchParams.get("curso") || "");
  const admin = createAdminClient();
  const conferida = await conferirChave(admin, decodeURIComponent(chave), "entrar");
  const { data: perfil } = await admin.from("profiles").select("id").eq("slug", slug).maybeSingle();
  const lojaId = String((perfil as { id?: string } | null)?.id || "");

  if (!conferida || conferida.lojaId !== lojaId || conferida.clienteId || conferida.orderId) {
    return NextResponse.redirect(new URL(`/${slug}/membros`, origem));
  }
  const destino = /^[0-9a-f-]{36}$/i.test(curso) ? `/${slug}/membros/curso/${curso}` : `/${slug}/membros`;
  const resposta = NextResponse.redirect(new URL(destino, origem));
  resposta.cookies.set({
    name: COOKIE_DA_PREVIA,
    value: decodeURIComponent(chave),
    httpOnly: true,
    secure: process.env.NODE_ENV === "production",
    sameSite: "lax",
    path: "/",
    maxAge: 2 * 60 * 60,
  });
  resposta.headers.set("referrer-policy", "no-referrer");
  return resposta;
}
