diff --git a/src/app/backend/actions.ts b/src/app/backend/actions.ts index dc1327d..894aea8 100644 --- a/src/app/backend/actions.ts +++ b/src/app/backend/actions.ts @@ -114,12 +114,12 @@ export async function publishPromo(formData: FormData) { } // ---- Members CRUD ---- -export async function addMember(formData: FormData) { +export async function addMember(formData: FormData): Promise { const { role } = await requireRole(); if (!can(role, "manageMembers")) throw new Error("Accès refusé"); const name = String(formData.get("name") ?? "").trim(); - if (!name) return; + if (!name) return undefined; const email = String(formData.get("email") ?? "").trim().toLowerCase(); if (!email) throw new Error("L'e-mail est requis pour créer le compte de l'adhérent."); const categoryId = formData.get("categoryId") ? Number(formData.get("categoryId")) : null; @@ -154,6 +154,7 @@ export async function addMember(formData: FormData) { revalidatePath("/backend/adherents"); revalidatePath("/backend"); revalidatePath("/"); + return newMember.id; } // Crée des comptes de connexion pour les adhérents existants qui n'en ont pas diff --git a/src/app/backend/adherents/AddMemberPanel.tsx b/src/app/backend/adherents/AddMemberPanel.tsx index f302376..a1e0638 100644 --- a/src/app/backend/adherents/AddMemberPanel.tsx +++ b/src/app/backend/adherents/AddMemberPanel.tsx @@ -1,6 +1,7 @@ "use client"; import { useState } from "react"; +import { useRouter } from "next/navigation"; import { addMember } from "../actions"; export function AddMemberPanel({ @@ -9,6 +10,7 @@ export function AddMemberPanel({ categories: { id: number; label: string }[]; }) { const [open, setOpen] = useState(false); + const router = useRouter(); return (
@@ -25,8 +27,10 @@ export function AddMemberPanel({ {open && (
{ - await addMember(fd); + const id = await addMember(fd); setOpen(false); + // Redirige vers la fiche : le login + mot de passe temporaire y sont affichés. + if (id) router.push(`/backend/adherents/${id}`); }} style={{ background: "#fff", border: "1px solid #e6dcc6", borderRadius: 16, padding: 22, marginTop: 14 }} >