refactor: nettoyer terminologie entité→organisation et corriger mapping TONTINE

- ADMIN_ENTITE→ADMIN_ORGANISATION dans Javadoc et README
- OrganisationModuleService: retirer TONTINE de MUTUELLE (BCEAO-réglementé, incompatible)
- Ajouter TONTINE aux ASSOCIATION et CLUB_SERVICE (pratique courante Afrique de l'Ouest)
- V18 migration: aligner modules_requis avec le code Java
This commit is contained in:
dahoud
2026-04-17 19:19:48 +00:00
parent 194a1e7017
commit 4b2b326afe
4 changed files with 11 additions and 12 deletions

View File

@@ -519,13 +519,13 @@ lionsctl pipeline \
### Authentification
- **Méthode** : OIDC/JWT via Keycloak
- **Rôles** : SUPER_ADMIN, ADMIN_ENTITE, MEMBRE_ACTIF, MEMBRE
- **Rôles** : SUPER_ADMIN, ADMIN_ORGANISATION, MEMBRE_ACTIF, MEMBRE
- **Token** : Bearer token dans header `Authorization`
### Endpoints protégés
```java
@RolesAllowed({"SUPER_ADMIN", "ADMIN_ENTITE"})
@RolesAllowed({"SUPER_ADMIN", "ADMIN_ORGANISATION"})
@POST
@Path("/budgets")
public Response createBudget(BudgetRequest request) {

View File

@@ -82,7 +82,7 @@ import org.jboss.logging.Logger;
* <ul>
* <li>OIDC avec Keycloak (realm: unionflow)</li>
* <li>JWT signature côté backend (HMAC-SHA256)</li>
* <li>RBAC avec rôles: SUPER_ADMIN, ADMIN_ENTITE, MEMBRE</li>
* <li>RBAC avec rôles: SUPER_ADMIN, ADMIN_ORGANISATION, MEMBRE</li>
* <li>Permissions granulaires par module</li>
* <li>CORS configuré pour client web</li>
* <li>HTTPS obligatoire en production</li>

View File

@@ -100,12 +100,7 @@ public class OrganisationModuleService {
modules.add("TONTINE");
modules.add("FINANCE");
}
case "MUTUELLE_EPARGNE" -> {
modules.add("EPARGNE");
modules.add("FINANCE");
modules.add("LCB_FT");
}
case "MUTUELLE_CREDIT" -> {
case "MUTUELLE", "MUTUELLE_EPARGNE", "MUTUELLE_CREDIT" -> {
modules.add("EPARGNE");
modules.add("CREDIT");
modules.add("FINANCE");
@@ -130,7 +125,11 @@ public class OrganisationModuleService {
case "GIE" -> {
modules.add("FINANCE");
}
case "ASSOCIATION", "CLUB_SERVICE", "CLUB_SPORTIF", "CLUB_CULTUREL" -> {
case "ASSOCIATION", "CLUB_SERVICE" -> {
modules.add("TONTINE");
modules.add("VOTES");
}
case "CLUB_SPORTIF", "CLUB_CULTUREL" -> {
modules.add("VOTES");
}
default -> LOG.debugf("Type d''organisation non reconnu pour module mapping : %s", typeOrganisation);

View File

@@ -60,8 +60,8 @@ END $$;
INSERT INTO types_reference (id, domaine, libelle, code, categorie, modules_requis, actif, est_defaut, est_systeme, ordre_affichage, date_creation, date_modification, version)
SELECT gen_random_uuid(), 'TYPE_ORGANISATION', v.libelle, v.code, v.categorie, v.modules_requis, true, false, true, 0, NOW(), NOW(), 0
FROM (VALUES
('Association Générale', 'ASSOCIATION', 'ASSOCIATIF', 'MEMBRES,COTISATIONS,EVENEMENTS,COMMUNICATION,DOCUMENTS,VOTES,AIDE'),
('Club Service', 'CLUB_SERVICE', 'ASSOCIATIF', 'MEMBRES,COTISATIONS,EVENEMENTS,COMMUNICATION,DOCUMENTS,VOTES,PROJETS_SOLIDAIRES'),
('Association Générale', 'ASSOCIATION', 'ASSOCIATIF', 'MEMBRES,COTISATIONS,EVENEMENTS,COMMUNICATION,DOCUMENTS,VOTES,TONTINE,AIDE'),
('Club Service', 'CLUB_SERVICE', 'ASSOCIATIF', 'MEMBRES,COTISATIONS,EVENEMENTS,COMMUNICATION,DOCUMENTS,VOTES,TONTINE,PROJETS_SOLIDAIRES'),
('Club Sportif', 'CLUB_SPORTIF', 'ASSOCIATIF', 'MEMBRES,COTISATIONS,EVENEMENTS,COMMUNICATION,DOCUMENTS'),
('Club Culturel', 'CLUB_CULTUREL','ASSOCIATIF', 'MEMBRES,COTISATIONS,EVENEMENTS,COMMUNICATION,DOCUMENTS')
) AS v(libelle, code, categorie, modules_requis)