Migration du frontend React/Next.js vers Quarkus + PrimeFaces Freya 5.0.0 Dashboard: - Extension de BtpXpressApiClient avec tous les endpoints dashboard - Création de DashboardService pour récupérer les données API - Refactorisation DashboardView : uniquement données réelles de l'API - Restructuration dashboard.xhtml avec tous les aspects métiers BTP - Suppression complète de toutes les données fictives Topbar: - Amélioration du menu profil utilisateur avec header professionnel - Ajout UserSessionBean pour gérer les informations utilisateur - Styles CSS personnalisés pour une disposition raffinée - Badges de notifications conditionnels Configuration: - Intégration du thème Freya 5.0.0-jakarta - Configuration OIDC pour Keycloak (security.lions.dev) - Gestion des erreurs HTTP 431 (headers size) - Support du format Fcfa avec séparateurs d'espaces Converters: - Création de FcfaConverter pour formater les montants en Fcfa avec espaces (x xxx xxx format) Code Quality: - Code entièrement documenté en français avec Javadoc exemplaire - Respect du principe Java 'Write once, use many times' - Logging complet pour le débogage - Gestion d'erreurs robuste
76 lines
2.9 KiB
Markdown
76 lines
2.9 KiB
Markdown
# Configuration BTP Xpress Client - PrimeFaces Freya
|
|
|
|
## ✅ Vérifications effectuées
|
|
|
|
### 1. Structure du projet
|
|
- ✅ Fichiers XHTML dans `src/main/resources/META-INF/resources/`
|
|
- ✅ Configuration dans `src/main/resources/META-INF/web.xml`
|
|
- ✅ Beans CDI dans `src/main/java/dev/lions/btpxpress/`
|
|
|
|
### 2. Configuration OIDC / Keycloak
|
|
- ✅ **Serveur Keycloak** : `https://security.lions.dev/realms/btpxpress`
|
|
- ✅ **Client ID** : `btpxpress-frontend`
|
|
- ✅ **Type d'application** : `web-app`
|
|
- ✅ **Redirection** : `/` (restauration du chemin après authentification)
|
|
- ✅ **Cookies** : Configurés pour la session
|
|
- ✅ **TLS** : `required` (production)
|
|
|
|
### 3. Communication avec le backend
|
|
- ✅ **URL Backend** : `http://localhost:8080`
|
|
- ✅ **Endpoints API** : `/api/v1/*`
|
|
- ✅ **REST Client** : `BtpXpressApiClient` configuré
|
|
- ✅ **Service** : `ChantierService` créé pour encapsuler les appels API
|
|
- ✅ **CORS Backend** : `http://localhost:8081` ajouté aux origines autorisées
|
|
|
|
### 4. Configuration serveur backend
|
|
- ✅ **Port** : `8080`
|
|
- ✅ **CORS Origins** : `http://localhost:3000,http://localhost:5173,http://localhost:8081`
|
|
- ✅ **JWT Validation** : `https://security.lions.dev/realms/btpxpress/protocol/openid-connect/certs`
|
|
- ✅ **Issuer** : `https://security.lions.dev/realms/btpxpress`
|
|
|
|
## 📋 Mapping Client ↔ Serveur
|
|
|
|
| Client (PrimeFaces) | Serveur (Quarkus) | Description |
|
|
|---------------------|-------------------|-------------|
|
|
| `http://localhost:8081` | `http://localhost:8080` | Communication HTTP |
|
|
| `BtpXpressApiClient` | `@Path("/api/v1/*")` | Interface REST Client |
|
|
| OIDC Client `btpxpress-frontend` | JWT Validation | Authentification |
|
|
| `ChantierService` | `ChantierResource` | Service métier chantiers |
|
|
|
|
## 🔐 Authentification
|
|
|
|
1. **Client accède à une page protégée** → Redirection vers Keycloak
|
|
2. **Keycloak (security.lions.dev)** → Authentification utilisateur
|
|
3. **Keycloak retourne le token** → Stocké dans la session du client
|
|
4. **Client fait appel API** → Token JWT envoyé dans header `Authorization`
|
|
5. **Backend valide le token** → Via les certificats Keycloak publics
|
|
|
|
## 🚀 Démarrage
|
|
|
|
1. **Backend** :
|
|
```bash
|
|
cd btpxpress-server
|
|
mvn quarkus:dev
|
|
```
|
|
→ Accessible sur http://localhost:8080
|
|
|
|
2. **Client** :
|
|
```bash
|
|
cd btpxpress-client
|
|
mvn quarkus:dev
|
|
```
|
|
→ Accessible sur http://localhost:8081
|
|
|
|
3. **Accès** :
|
|
- Page d'accueil : http://localhost:8081/
|
|
- Dashboard : http://localhost:8081/dashboard.xhtml
|
|
- Login : http://localhost:8081/login.xhtml
|
|
|
|
## ⚠️ Points d'attention
|
|
|
|
- Le client doit être configuré avec le **même realm Keycloak** que le serveur (`btpxpress`)
|
|
- Le client ID `btpxpress-frontend` doit exister dans Keycloak
|
|
- Les tokens JWT doivent être envoyés automatiquement via le REST Client
|
|
- Le backend doit accepter les requêtes CORS depuis `http://localhost:8081`
|
|
|