fix: initialiser modulesActifs/categorieType depuis types_reference à la création d'org

- TypeReference: ajout des champs categorie et modulesRequis (colonnes DB existantes depuis V18
  mais non mappées en JPA — Hibernate validate échouait silencieusement)
- OrganisationService.creerOrganisation(): lit types_reference.modules_requis pour initialiser
  Organisation.modulesActifs, au lieu de dépendre uniquement du switch hardcodé dans
  OrganisationModuleService.getModulesParType()

Avant: un type créé via CRUD (ex: TANTANPION) tombait dans le default du switch → aucun
module métier → rôles métier assignables mais menus jamais affichés.
Après: tout type avec modules_requis renseigné dans types_reference active correctement
ses modules à la création de l'organisation.
This commit is contained in:
dahoud
2026-04-09 14:09:46 +00:00
parent c79a393d6e
commit b676e003e4
2 changed files with 39 additions and 0 deletions

View File

@@ -104,6 +104,29 @@ public class OrganisationService {
organisation.setTypeOrganisation("ASSOCIATION");
}
// Initialiser modulesActifs et categorieType depuis types_reference
// Cela permet aux types créés via CRUD (ex: "TANTANPION") d'hériter
// automatiquement de leurs modules_requis sans modifier le code Java.
if (organisation.getModulesActifs() == null || organisation.getModulesActifs().isBlank()) {
typeReferenceRepository
.findByDomaineAndCode("TYPE_ORGANISATION", organisation.getTypeOrganisation())
.ifPresentOrElse(
tr -> {
if (tr.getModulesRequis() != null && !tr.getModulesRequis().isBlank()) {
organisation.setModulesActifs(tr.getModulesRequis());
LOG.infof("Modules initialisés depuis types_reference pour le type '%s': %s",
organisation.getTypeOrganisation(), tr.getModulesRequis());
}
if (tr.getCategorie() != null && organisation.getCategorieType() == null) {
organisation.setCategorieType(tr.getCategorie());
}
},
() -> LOG.warnf(
"Type d'organisation '%s' absent de types_reference — modules non initialisés. " +
"Ajoutez ce type via l'administration pour activer les modules métier.",
organisation.getTypeOrganisation()));
}
// Audit : créé par / modifié par (BaseEntity n'initialise pas creePar dans
// @PrePersist)
String auditUser = utilisateur != null && !utilisateur.isBlank() ? utilisateur : "system";