From 41a88ea91454feb3925c6c7283516e679bc33f97 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Tue, 12 Aug 2025 15:52:19 +0200 Subject: [PATCH] feat: lock membre creation with same name --- .../fr/titionfire/ffsaf/domain/service/MembreService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java index a6f29c5..72e54ef 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java @@ -385,6 +385,14 @@ public class MembreService { public Uni add(FullMemberForm input, String subject) { return repository.find("userId = ?1", subject).firstResult() + .call(membreModel -> + repository.count( + "unaccent(lname) ILIKE unaccent(?2) AND unaccent(fname) ILIKE unaccent(?2) AND club = ?3", + input.getLname(), input.getFname(), membreModel.getClub()) + .invoke(Unchecked.consumer(c -> { + if (c > 0) + throw new DBadRequestException("Membre déjà existent"); + }))) .chain(membreModel -> { MembreModel model = getMembreModel(input, membreModel.getClub()); model.setRole(RoleAsso.MEMBRE);