fix(admin): PATCH content-pages respecte ?lang= (sinon écrasait FR)

This commit is contained in:
Claude Integration 2026-06-01 00:51:19 +00:00
parent 0244eb5029
commit 1f8dd90979

View file

@ -11,21 +11,28 @@ const patchSchema = z.object({
published: z.boolean().optional(),
});
function normalizeLang(v: string | null): string {
if (!v) return "fr";
const l = v.toLowerCase().trim();
return /^[a-z]{2}$/.test(l) ? l : "fr";
}
export async function PATCH(req: Request, ctx: { params: Promise<{ slug: string }> }) {
await requireRole([UserRole.ADMIN]);
const { slug } = await ctx.params;
const url = new URL(req.url);
const lang = normalizeLang(url.searchParams.get("lang"));
const session = await auth();
const parsed = patchSchema.safeParse(await req.json().catch(() => ({})));
if (!parsed.success) {
return NextResponse.json({ error: "Invalid payload" }, { status: 400 });
}
// L'admin édite la version FR par défaut (édition multi-langues à venir).
const existing = await prisma.contentPage.findUnique({
where: { slug_lang: { slug, lang: "fr" } },
where: { slug_lang: { slug, lang } },
});
if (!existing) return NextResponse.json({ error: "Not found" }, { status: 404 });
const updated = await prisma.contentPage.update({
where: { slug_lang: { slug, lang: "fr" } },
where: { slug_lang: { slug, lang } },
data: {
...(parsed.data.title !== undefined ? { title: parsed.data.title } : {}),
...(parsed.data.body !== undefined ? { body: parsed.data.body } : {}),
@ -35,6 +42,7 @@ export async function PATCH(req: Request, ctx: { params: Promise<{ slug: string
});
return NextResponse.json({
slug: updated.slug,
lang: updated.lang,
title: updated.title,
published: updated.published,
updatedAt: updated.updatedAt,