f0ece5dc877afa8165cc2499fbe2b9d67fad481a
Co-authored-by: Cursor <cursoragent@cursor.com>
Lions User Manager
Gestion centralisée des utilisateurs via Keycloak Admin API — Backend REST + Frontend JSF PrimeFaces Freya
Architecture
lions-user-manager/
├── pom.xml # POM parent (multi-modules)
├── lions-user-manager-server-api/ # Contrats API : DTOs, interfaces, enums
├── lions-user-manager-server-impl-quarkus/ # Serveur REST Quarkus + Keycloak Admin
├── lions-user-manager-client-quarkus-primefaces-freya/ # Client Web JSF + PrimeFaces Freya
└── scripts/ # Scripts DevOps (Keycloak, DB, Git)
Stack Technique
| Composant | Technologie | Version |
|---|---|---|
| Runtime | Java | 17 |
| Framework | Quarkus | 3.15.1 |
| UI Framework | PrimeFaces (Freya theme) | 14.0.5 |
| Auth | Keycloak (OIDC + Admin API) | 26.0.4 |
| Base de données | PostgreSQL + Hibernate ORM Panache | — |
| Migration DB | Flyway | — |
| Build | Maven | — |
| Tests | JUnit 5, Mockito 5, Testcontainers, REST-Assured | — |
Modules
server-api
Contrats partagés entre serveur et client :
- DTOs :
UserDTO,RoleDTO,AuditLogDTO,RealmAssignmentDTO, etc. - Interfaces Service :
UserService,RoleService,AuditService,SyncService,RealmAuthorizationService - Enums :
StatutUser,TypeRole,TypeActionAudit - Validations :
ValidationConstants
server-impl-quarkus
API REST backend :
- Resources :
UserResource,RoleResource,AuditResource,RealmAssignmentResource,SyncResource,RealmResource - Services : Implémentations complètes avec gestion d'erreurs et audit
- Keycloak Admin Client : Gestion des utilisateurs, rôles, realms via Keycloak Admin API
- Health & Metrics :
/health,/metrics(Prometheus),/q/swagger-ui - Audit : Traçabilité des actions sur table PostgreSQL
client-quarkus-primefaces-freya
Interface web admin :
- Pages : Dashboard, Gestion Utilisateurs (CRUD), Rôles, Audit, Synchronisation, Realm Assignment
- Beans JSF :
DashboardBean,UserListBean,UserCreationBean,UserProfilBean,RoleGestionBean,AuditConsultationBean, etc. - REST Clients : Communication type-safe avec le serveur via MicroProfile REST Client
- Thème : PrimeFaces Freya (enterprise dark/light)
Prérequis
- Java 17+
- Maven 3.9+
- Docker Desktop (pour Keycloak et PostgreSQL)
- Keycloak accessible sur
localhost:8180 - PostgreSQL accessible sur
localhost:5432
Démarrage Rapide
1. Démarrer l'infrastructure
# Keycloak
docker run -d --name keycloak -p 8180:8080 \
-e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
-e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:26.0.4 start-dev
# PostgreSQL
docker run -d --name postgres -p 5432:5432 \
-e POSTGRES_USER=skyfile \
-e POSTGRES_PASSWORD=skyfile \
-e POSTGRES_DB=lions_user_manager_dev \
postgres:16
2. Configurer Keycloak
# Utiliser les scripts dans scripts/
pwsh scripts/setup-keycloak-client.ps1
3. Compiler le projet
mvn clean install -DskipTests
4. Lancer le serveur (port 8081)
cd lions-user-manager-server-impl-quarkus
mvn quarkus:dev -Dquarkus.profile=dev
5. Lancer le client (port 8082)
cd lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev -Dquarkus.profile=dev
Ports
| Service | Port | URL |
|---|---|---|
| Keycloak | 8180 | http://localhost:8180 |
| Serveur API | 8081 | http://localhost:8081 |
| Client Web | 8082 | http://localhost:8082 |
| Swagger UI | 8081 | http://localhost:8081/q/swagger-ui |
| PostgreSQL | 5432 | — |
Configuration
Chaque module utilise 3 fichiers de configuration Quarkus :
| Fichier | Rôle |
|---|---|
application.properties |
Propriétés communes (tous environnements) |
application-dev.properties |
Surcharges développement (ports, logging verbeux, Keycloak local) |
application-prod.properties |
Surcharges production (env vars, TLS, logging minimal) |
Tests
# Tests unitaires seuls
mvn test
# Tests d'intégration
mvn verify
# Avec couverture JaCoCo
mvn verify -Pjacoco
Production
Variables d'environnement requises
# Keycloak
KEYCLOAK_AUTH_SERVER_URL=https://security.lions.dev/realms/lions-user-manager
KEYCLOAK_SERVER_URL=https://security.lions.dev
KEYCLOAK_ADMIN_USERNAME=admin
KEYCLOAK_ADMIN_PASSWORD=<secret>
KEYCLOAK_CLIENT_ID=lions-user-manager-client
# Base de données
DB_HOST=<host>
DB_PORT=5432
DB_NAME=lions_user_manager
DB_USERNAME=<user>
DB_PASSWORD=<secret>
# Sécurité
OIDC_ENCRYPTION_SECRET=<32-char-secret>
CORS_ORIGINS=https://users.lions.dev
# Backend URL (pour le client)
LIONS_USER_MANAGER_BACKEND_URL=https://api.users.lions.dev
Docker
Chaque module déployable contient un Dockerfile.prod :
# Build natif
mvn package -Pnative -DskipTests
# Build Docker
docker build -f Dockerfile.prod -t lions-user-manager-server:1.0.0 .
Licence
Propriétaire — Lions Dev Team © 2025
Description
Languages
HTML
42.3%
CSS
30.2%
Java
24.4%
JavaScript
3%