mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-24 07:38:04 +02:00
Demandes d'adhésion : actions selon le statut, double approbation impossible
Une demande approuvée gardait ses boutons « Approuver & créer » et « Rejeter », alors que l'adhérent et son compte existaient déjà. La ligne n'affiche plus que le lien vers la fiche créée (retrouvée par l'e-mail) ; une demande nouvelle garde ses deux actions, une demande rejetée peut encore être approuvée. Côté serveur, approveMembershipRequest refuse une demande déjà approuvée et setRequestStatus ne réécrit plus le statut d'une demande approuvée : un double clic ou un onglet resté ouvert ne peut plus créer un second compte. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HDbKbJrPWweXXYSxA8MXW7
This commit is contained in:
2 files changed
+50
-9
No files matched your search
@@ -1163,6 +1163,9 @@ export async function approveMembershipRequest(formData: FormData): Promise<Crea
|
||||
|
||||
const [req] = await db.select().from(membershipRequests).where(eq(membershipRequests.id, id));
|
||||
if (!req) throw new Error("Demande introuvable.");
|
||||
// Garde serveur : un double clic ou un onglet resté ouvert ne doit jamais
|
||||
// créer un second compte pour la même demande.
|
||||
if (req.status === "approved") throw new Error("Cette demande a déjà été approuvée : l'adhérent existe.");
|
||||
|
||||
const email = (req.email ?? "").trim().toLowerCase();
|
||||
if (!email) {
|
||||
@@ -1206,6 +1209,9 @@ export async function setRequestStatus(formData: FormData) {
|
||||
const id = Number(formData.get("id"));
|
||||
const status = String(formData.get("status") ?? "");
|
||||
if (!id || !["new", "approved", "rejected"].includes(status)) return;
|
||||
// Une demande approuvée a produit un adhérent : son statut ne se réécrit plus.
|
||||
const [current] = await db.select({ status: membershipRequests.status }).from(membershipRequests).where(eq(membershipRequests.id, id));
|
||||
if (!current || current.status === "approved") return;
|
||||
await db
|
||||
.update(membershipRequests)
|
||||
.set({ status: status as "new" | "approved" | "rejected" })
|
||||
|
||||
Reference in new issue
Block a user