// POST /api/admin/impersonate/stop : revient sur la session admin originale.
// Note : la session courante est celle de l'utilisateur impersonate, donc
// requireAdmin() echoue si le role du target n'est pas admin (cas normal :
// le target est un user client). On verifie via auth.api.getSession() qu'il y
// a bien un champ `impersonatedBy` pour autoriser le stop.

import { NextResponse, type NextRequest } from "next/server";
import { headers } from "next/headers";
import { auth } from "@/lib/auth";

function redirectBase(request: NextRequest): string {
  return process.env.BETTER_AUTH_URL?.trim() || request.nextUrl.origin;
}

export async function POST(request: NextRequest) {
  const session = await auth.api.getSession({ headers: await headers() });
  if (!session || !session.session.impersonatedBy) {
    return NextResponse.redirect(new URL("/connexion", redirectBase(request)), { status: 303 });
  }

  try {
    await auth.api.stopImpersonating({ headers: await headers() });
  } catch (err) {
    console.error("[impersonate stop] failed", err);
  }

  return NextResponse.redirect(new URL("/atelier-novelia/clients", redirectBase(request)), {
    status: 303,
  });
}
