- UserServiceImpl.createUser : capture HTTP 409 et récupère l'utilisateur
existant (searchByEmail/searchByUsername) au lieu de throw brutal
- usernameExists : utilise searchByUsername(exact=true) au lieu de search(query)
pour match exact sans ambiguïté
- pom.xml : <release>21</release> explicite sur maven-compiler-plugin
- Lombok 1.18.34 → 1.18.36
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Ajoute KeycloakRealmSetupService : auto-initialisation des rôles realm
(admin, user_manager, user_viewer, role_manager...) et assignation du rôle
user_manager au service account unionflow-server au démarrage (idempotent,
retries, thread séparé pour ne pas bloquer le démarrage)
→ Corrige le 403 sur resetPassword / changement de mot de passe premier login
- UserResource : étend les @RolesAllowed avec ADMIN/SUPER_ADMIN/USER pour
permettre aux appels inter-services unionflow-server d'accéder aux endpoints
sans être bloqués par le RBAC LUM ; corrige sendVerificationEmail (retourne Response)
- application-dev.properties : service-accounts.user-manager-clients=unionflow-server
- application-prod.properties : client-id, credentials.secret, token.audience, auto-setup
- application-test.properties : H2 in-memory (plus besoin de Docker pour les tests)
- pom.xml : H2 scope test, Jacoco 100% enforcement (exclusions MapStruct/repos/setup),
annotation processors MapStruct+Lombok explicites
- .gitignore + .env ajouté (.env exclu du commit)
- script/docker/.env.example : variables KEYCLOAK_ADMIN_USERNAME/PASSWORD documentées