dahoud
aa4350ffbb
feat(members): desactiverMembre cascade complète (Keycloak, Kafka, audit, mono-admin)
Refactor de MembreService.desactiverMembre en 8 étapes transactionnelles :
1. GARDE-FOU mono-admin : refuse 409 Conflict si le membre est le seul
ORGADMIN d'au moins une org (évite l'orphelinage).
2. DB : actif=false + statutCompte='DESACTIVE'.
3. Adhésions actives → SUSPENDU + décrément nombreMembres.
4. MembreRole (ORGADMIN, TRESORIER...) → actif=false, dateFin=today.
5. Notifications pending (EN_ATTENTE, ECHEC_TEMPORAIRE) → ANNULEE.
6. Keycloak (lions-user-manager) : user.enabled=false → login bloqué.
7. Kafka : publishMemberDeactivated(membre) sur unionflow.members.events
→ consumers peuvent réagir (comptes épargne, inscriptions, approvals, etc.)
8. AuditLog MEMBRE_DESACTIVE : opérateur, timestamp, compteurs (RGPD/compliance).
Côté liste :
- listerMembres/compterMembres : filtre actif=true par défaut (SuperAdmin).
- MembreRepository.findDistinctByOrganisationIdIn : idem pour OrgAdmin.
Services ajoutés :
- AuditService.logMembreDesactive
- KafkaEventProducer.publishMemberDeactivated
2026-04-15 20:12:55 +00:00
..
2026-03-28 14:21:30 +00:00
2026-03-16 06:39:39 +00:00
2026-04-04 16:14:30 +00:00
2026-04-12 15:22:09 +00:00
2026-03-28 14:21:30 +00:00
2026-03-28 14:21:30 +00:00
2026-04-11 01:25:45 +00:00
2026-03-16 21:17:18 +00:00
2026-04-15 20:12:55 +00:00
2026-04-04 16:14:30 +00:00
2026-04-10 20:53:19 +00:00
2026-04-11 03:01:28 +00:00
2026-04-07 20:52:26 +00:00
2026-04-07 20:52:26 +00:00
2026-04-04 16:14:30 +00:00
2026-04-07 20:52:26 +00:00
2026-04-07 20:52:26 +00:00
2026-03-16 20:11:03 +00:00
2026-03-28 14:21:30 +00:00
2026-03-28 14:21:30 +00:00
2026-03-28 14:21:30 +00:00
2026-03-28 14:21:30 +00:00
2026-04-04 16:14:30 +00:00
2026-03-28 14:21:30 +00:00
2026-04-07 20:52:26 +00:00
2026-03-28 14:21:30 +00:00
2026-04-06 16:49:47 +00:00
2026-04-10 20:53:19 +00:00
2026-04-15 20:05:49 +00:00
2026-04-15 20:12:55 +00:00
2026-04-11 03:01:28 +00:00
2026-03-28 14:21:30 +00:00
2026-04-07 20:52:26 +00:00
2026-04-15 20:05:49 +00:00
2026-04-07 20:52:26 +00:00
2026-03-28 14:21:30 +00:00
2026-04-06 16:49:47 +00:00
2026-04-07 20:52:26 +00:00
2026-04-04 16:14:30 +00:00
2026-03-16 05:15:17 +00:00
2026-04-07 20:52:26 +00:00
2026-03-28 14:21:30 +00:00
2026-04-09 15:08:28 +00:00
2026-04-07 20:52:26 +00:00