fix(admin): PATCH content-pages respecte ?lang= (sinon écrasait FR)
This commit is contained in:
parent
0244eb5029
commit
1f8dd90979
1 changed files with 11 additions and 3 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue