# 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`

