diff --git a/next.config.mjs b/next.config.mjs index 8440804..a481de0 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -2,6 +2,10 @@ const nextConfig = { output: "standalone", reactStrictMode: true, + experimental: { + // Les images d'entête/logo sont envoyées en data-URL via server action. + serverActions: { bodySizeLimit: "4mb" }, + }, }; export default nextConfig; diff --git a/src/app/backend/actions.ts b/src/app/backend/actions.ts index bdffa90..c811dbb 100644 --- a/src/app/backend/actions.ts +++ b/src/app/backend/actions.ts @@ -141,6 +141,8 @@ export async function updateMember(formData: FormData) { phone: String(formData.get("phone") ?? "").trim() || null, website: String(formData.get("website") ?? "").trim() || null, memberSince: formData.get("memberSince") ? Number(formData.get("memberSince")) : null, + coverUrl: String(formData.get("coverUrl") ?? "").trim() || null, + logoUrl: String(formData.get("logoUrl") ?? "").trim() || null, tags: String(formData.get("tags") ?? "").trim() || null, hours: String(formData.get("hours") ?? "").trim() || null, status: String(formData.get("status") ?? "pending") as "active" | "pending", @@ -149,6 +151,7 @@ export async function updateMember(formData: FormData) { .where(eq(members.id, id)); revalidatePath("/backend/adherents"); + revalidatePath(`/adherents/${id}`); revalidatePath("/"); } diff --git a/src/app/backend/adherents/[id]/page.tsx b/src/app/backend/adherents/[id]/page.tsx index 726a5db..94297f2 100644 --- a/src/app/backend/adherents/[id]/page.tsx +++ b/src/app/backend/adherents/[id]/page.tsx @@ -5,6 +5,7 @@ import { auth } from "@/auth"; import { db } from "@/db"; import { categories, members } from "@/db/schema"; import { can } from "@/lib/rbac"; +import { ImageField } from "@/components/ImageField"; import { deleteMember, updateMember } from "../../actions"; export const dynamic = "force-dynamic"; @@ -110,6 +111,11 @@ export default async function EditMemberPage({ +
+ + +
+