From 1f8dd90979ab629d675da60d4e7f3b01b65ee1fa Mon Sep 17 00:00:00 2001 From: Claude Integration Date: Mon, 1 Jun 2026 00:51:19 +0000 Subject: [PATCH] =?UTF-8?q?fix(admin):=20PATCH=20content-pages=20respecte?= =?UTF-8?q?=20=3Flang=3D=20(sinon=20=C3=A9crasait=20FR)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/admin/content-pages/[slug]/route.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/app/api/admin/content-pages/[slug]/route.ts b/src/app/api/admin/content-pages/[slug]/route.ts index c2db7dd..df9ee1d 100644 --- a/src/app/api/admin/content-pages/[slug]/route.ts +++ b/src/app/api/admin/content-pages/[slug]/route.ts @@ -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,