Repository Public
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// /api/admin/mail/preview — aperçu FIDÈLE d'un gabarit avant envoi : même3// moteur de rendu que l'envoi (mail-templates.ts), avec la vraie signature4// de l'admin connecté. Retourne l'HTML complet, affiché dans un iframe5// sandbox côté composeur. Session admin requise.6import { NextRequest, NextResponse } from "next/server";7import { getAdminSession } from "@/lib/comms/admin-auth";8import { findAdminById } from "@/lib/comms/db";9import { renderMailTemplate, templateById } from "@/lib/comms/mail-templates";1011export async function POST(req: NextRequest) {12 const session = await getAdminSession();13 if (!session)14 return NextResponse.json({ error: "Non autorisé." }, { status: 401 });15 const admin = findAdminById(session.id);16 const body = (await req.json().catch(() => null)) as {17 template?: string;18 subject?: string;19 body?: string;20 } | null;21 const { html } = renderMailTemplate({22 templateId: templateById(body?.template ?? "simple").id,23 subject: (body?.subject ?? "").trim().slice(0, 300) || "Sujet de votre courriel",24 body:25 (body?.body ?? "").trim().slice(0, 100_000) ||26 "Votre message apparaîtra ici, mis en forme dans le gabarit choisi.",27 adminName: admin?.display_name ?? session.displayName,28 adminEmail: admin?.email ?? "vous@groupe-ka.com",29 });30 return NextResponse.json({ html });31}32