Refactoring - Version stable

This commit is contained in:
dahoud
2026-03-28 15:15:24 +00:00
parent 607d31d2fc
commit 4d096a4791
4 changed files with 158 additions and 12 deletions

View File

@@ -176,10 +176,16 @@ public class MembreResource {
// Conversion DTO vers entité
Membre membre = membreService.convertFromCreateRequest(membreDTO);
// Création du membre — statut EN_ATTENTE_VALIDATION, Keycloak provisionné à
// l'approbation
// Création du membre — statut EN_ATTENTE_VALIDATION
Membre nouveauMembre = membreService.creerMembre(membre);
// Provisionner le compte Keycloak (non bloquant — l'admin peut activer manuellement)
try {
keycloakSyncService.provisionKeycloakUser(nouveauMembre.getId());
} catch (Exception e) {
LOG.warnf("Provisionnement Keycloak échoué pour %s (non bloquant): %s", nouveauMembre.getEmail(), e.getMessage());
}
// Validation périmètre ADMIN_ORGANISATION - lier le membre à l'organisation
java.util.Set<String> roles = securityIdentity.getRoles();
boolean onlyOrgAdmin = roles != null && roles.contains("ADMIN_ORGANISATION")
@@ -668,6 +674,27 @@ public class MembreResource {
.build();
}
@PUT
@Path("/{id}/activer")
@RolesAllowed({"ADMIN", "SUPER_ADMIN"})
@Operation(summary = "Activer un membre", description = "Passe le membre en statut ACTIF et lui assigne le rôle MEMBRE_ACTIF dans Keycloak.")
@APIResponse(responseCode = "200", description = "Membre activé avec succès")
@APIResponse(responseCode = "404", description = "Membre non trouvé")
public Response activerMembre(@Parameter(description = "UUID du membre") @PathParam("id") UUID id) {
LOG.infof("Activation du membre ID: %s", id);
Membre membreActive = membreService.activerMembre(id);
// Assigner le rôle MEMBRE_ACTIF dans Keycloak (non bloquant)
try {
keycloakSyncService.activerMembreDansKeycloak(id);
} catch (Exception e) {
LOG.warnf("Activation Keycloak échouée pour %s (non bloquant): %s", membreActive.getEmail(), e.getMessage());
}
return Response.ok(membreService.convertToResponse(membreActive)).build();
}
@GET
@Path("/export/count")
@Produces(MediaType.APPLICATION_JSON)