- 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
- UserServiceImpl.updateUser: ajout de la propagation des requiredActions vers Keycloak
(champ ignoré jusqu'ici — cause racine de l'échec de la remédiation des anciens comptes)
- UserServiceImpl.createUser: re-application des requiredActions après setPassword(temporary=false)
car resetPassword avec temporary=false retire UPDATE_PASSWORD des required actions dans Keycloak
- RoleResource: ajout du rôle user_manager dans @RolesAllowed sur assignRealmRoles et revokeRealmRoles
- Add quarkus.http.proxy.* properties to read X-Forwarded-* headers
- Fixes redirect issue where Swagger UI redirects to /q/swagger-ui/ instead of /lions-user-manager/q/swagger-ui/
- Allows Quarkus to reconstruct original URL from ingress headers
Optimisations majeures de l'interface utilisateur et amélioration du système d'import/export CSV avec rapport d'erreurs détaillé.
## Optimisations UX/UI
- Suppression des blocs Actions Rapides redondants dans les pages list/view
- Consolidation des actions dans les en-têtes de page
- Conversion des filtres en panneau collapsible avec badge Filtres actifs
- Suppression du sous-menu Attribution Rôles (redondant avec /users/edit)
- Amélioration de la navigation et de l'ergonomie générale
- Correction des attributs iconLeft non supportés par fr:fieldInput
## Import/Export CSV
- Ajout de ImportResultDTO avec rapport détaillé des erreurs
- Création de CsvValidationHelper pour validation robuste des données
- Amélioration des messages d'erreur avec numéros de ligne
- Support de colonnes flexibles (username,prenom,nom,email)
- Validation stricte des formats email
## Corrections techniques
- Fix DashboardBeanTest: getRecentActions() → getActionsLast24h()
- Fix UserServiceImplTest: retour ImportResultDTO au lieu de int
- Amélioration de la gestion d'erreurs dans AuditServiceImpl
- Migration Flyway V1.0.0 pour la table audit_logs
## Infrastructure
- Mise à jour .gitignore professionnel (exclusion docs de session)
- Configuration production sécurisée (variables d'environnement)
- Pas de secrets hardcodés dans les fichiers de configuration
Testé et validé en environnement de développement.
- Ajout DevSecurityContextProducer pour @RolesAllowed en dev
- Correction UserSearchCriteriaDTO (searchTerm au lieu de searchText)
- Mise à jour version quarkus-primefaces à 3.15.1
- Corrections expressions EL dans composants audit et role-assignment
- Création du realm 'lions-user-manager' dédié à l'application
- Configuration du client frontend uniquement (lions-user-manager-client)
- Backend utilise directement l'Admin API (admin/admin) sans client séparé
- Création de l'utilisateur de test: testuser/test123
- Création des rôles: admin, user_manager, user_viewer, auditor, sync_manager
- Mise à jour des configurations pour utiliser le bon realm
- Scripts de setup: setup-keycloak-correct.sh
- Documentation: KEYCLOAK_SETUP.md
Corrections par rapport à la première tentative:
- Utilisation d'un realm dédié au lieu de 'master'
- Pas de client pour le backend (utilise directement Admin API)
- Configuration OIDC correcte pour le frontend
- Ajout du module client Quarkus PrimeFaces Freya avec interface complète
- Ajout de l'AuditResource pour la gestion des logs d'audit
- Ajout du SyncResource pour la synchronisation Keycloak
- Ajout du SyncServiceImpl pour les opérations de synchronisation
- Ajout des DTOs de synchronisation (SyncStatusDTO, etc.)
- Corrections mineures dans RoleMapper, RoleServiceImpl, AuditServiceImpl
- Configuration des properties pour dev et prod
- Ajout de la configuration Claude Code (.claude/)
- Documentation complète du projet (AI_HANDOFF_DOCUMENT.md)
Le projet compile maintenant avec succès (BUILD SUCCESS).
Tous les modules (API, Server Impl, Client) sont fonctionnels.