Files
lions-user-manager-server-api/README.md

182 lines
5.1 KiB
Markdown

# 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
```bash
# 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
```bash
# Utiliser les scripts dans scripts/
pwsh scripts/setup-keycloak-client.ps1
```
### 3. Compiler le projet
```bash
mvn clean install -DskipTests
```
### 4. Lancer le serveur (port 8081)
```bash
cd lions-user-manager-server-impl-quarkus
mvn quarkus:dev -Dquarkus.profile=dev
```
### 5. Lancer le client (port 8082)
```bash
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
```bash
# Tests unitaires seuls
mvn test
# Tests d'intégration
mvn verify
# Avec couverture JaCoCo
mvn verify -Pjacoco
```
## Production
### Variables d'environnement requises
```bash
# 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` :
```bash
# 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