Files
btpxpress-frontend/CONFIGURATION.md
dahoud b749f2df37 feat: Migration complète vers Quarkus PrimeFaces Freya
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
2025-11-01 19:55:30 +00:00

2.9 KiB

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 :

    cd btpxpress-server
    mvn quarkus:dev
    

    → Accessible sur http://localhost:8080

  2. Client :

    cd btpxpress-client
    mvn quarkus:dev
    

    → Accessible sur http://localhost:8081

  3. Accès :

⚠️ 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