feat(v3.0): implémentation Phases 0-8 — RBAC, lifecycle, multi-org, plans, dashboards
Phase 0 : @RolesAllowed SUPER_ADMIN sur POST/DELETE organisations ; AuthenticationFilter pages super-admin Phase 2 : OrganisationModuleService, @RequiresModule, ModuleAccessFilter, RoleService, PermissionChecker Phase 3 : multi-org context switching (OrganisationContextFilter, headers X-Active-Organisation-Id / X-Active-Role) Phase 4 : feature-gating navigation par typeOrganisation (web MenuBean + mobile MorePage) Phase 5 : MemberLifecycleService — 8 transitions (activer/suspendre/radier/archiver/inviter/accepter/expirer/rappels) Phase 6 : FormuleAbonnement Option C (planCommercial, apiAccess, federationAccess, quotas) + SouscriptionOrganisation méthodes quota Phase 7 : DashboardResource SUPER_ADMIN ajouté ; DashboardBean.checkAccessAndRedirect() ; dashboards distincts par rôle Phase 8 : MembreResourceLifecycleRbacTest, SouscriptionQuotaOptionCTest, OrganisationContextHolderTest, OrganisationContextFilterMultiOrgTest, MemberLifecycleServiceTest
This commit is contained in:
@@ -719,4 +719,27 @@ public class OrganisationService {
|
||||
.accepteNouveauxMembres(req.accepteNouveauxMembres() != null ? req.accepteNouveauxMembres() : true)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la liste des organisations d'un membre (pour le sélecteur multi-org).
|
||||
* Inclut les infos nécessaires au sélecteur : id, nom, type, catégorie, modules, rôle du membre.
|
||||
*/
|
||||
public java.util.List<java.util.Map<String, Object>> listerOrganisationsParMembre(java.util.UUID membreId) {
|
||||
java.util.List<MembreOrganisation> liens = membreOrganisationRepository.findOrganisationsActivesParMembre(membreId);
|
||||
return liens.stream().map(lien -> {
|
||||
Organisation org = lien.getOrganisation();
|
||||
java.util.Map<String, Object> entry = new java.util.LinkedHashMap<>();
|
||||
entry.put("organisationId", org.getId());
|
||||
entry.put("nom", org.getNom());
|
||||
entry.put("nomCourt", org.getNomCourt());
|
||||
entry.put("typeOrganisation", org.getTypeOrganisation());
|
||||
entry.put("categorieType", org.getCategorieType());
|
||||
entry.put("modulesActifs", org.getModulesActifs());
|
||||
entry.put("statut", org.getStatut());
|
||||
entry.put("statutMembre", lien.getStatutMembre() != null ? lien.getStatutMembre().name() : null);
|
||||
entry.put("roleOrg", lien.getRoleOrg());
|
||||
entry.put("dateAdhesion", lien.getDateAdhesion());
|
||||
return entry;
|
||||
}).toList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user