# Page d'accueil - Lions User Manager

## ✅ Création réussie

Une page d'accueil professionnelle et publique a été créée pour Lions User Manager.

---

## 📁 Fichiers créés

### 1. Page d'accueil statique
**Fichier** : `lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/index.html`

**Type** : HTML pur (pas de JSF, pas de backing bean)

**Avantages** :
- ✅ **Pas de dépendances** : Aucun bean JSF requis
- ✅ **Chargement ultra-rapide** : Pas de traitement serveur
- ✅ **Toujours accessible** : Même si backend down ou erreur de configuration
- ✅ **Responsive** : Adapté mobile, tablette, desktop

---

## 🎨 Fonctionnalités de la page

### 1. Design moderne
- Gradient violet/bleu (branding Lions)
- Icônes PrimeIcons
- Animations fluides (fadeInUp, slideDown)
- Ombres et effets de profondeur

### 2. Sections
- **Logo et titre** : Identité visuelle forte
- **Description** : Explication claire de l'application
- **4 fonctionnalités clés** :
  - Gestion des utilisateurs
  - Attribution des rôles
  - Audit et statistiques
  - Synchronisation
- **Bouton de connexion** : Redirige vers `/pages/user-manager/dashboard.xhtml`

### 3. Alerte de session expirée
- **Affichage conditionnel** : Visible uniquement si `?expired=true` dans l'URL
- **Design** : Bannière rouge/rose avec icône d'avertissement
- **Message** : "Votre session a expiré. Veuillez vous reconnecter pour continuer."
- **Animation** : SlideDown au chargement

---

## ⚙️ Configuration

### Chemins publics
```properties
# application.properties
quarkus.http.auth.permission.public.paths=/,/index.html,...
```

✅ La page est **accessible sans authentification**.

### Redirection en cas de session expirée
```properties
# application.properties
quarkus.myfaces.view-expired-exception-handler-redirect-page=/index.html?expired=true
```

**Comportement** :
1. Si **vue JSF expirée** → Redirige vers `/index.html?expired=true`
2. L'utilisateur voit l'**alerte rouge** "Votre session a expiré"
3. Il clique sur **"Se connecter avec Keycloak"**
4. **Keycloak gère l'authentification** → Redirige vers dashboard après login

---

## 🔄 Flux utilisateur

### Scénario 1 : Premier accès
```
Utilisateur visite http://localhost:8082
    ↓
Affiche index.html (page d'accueil)
    ↓
Clique "Se connecter avec Keycloak"
    ↓
Redirigé vers /pages/user-manager/dashboard.xhtml
    ↓
Quarkus OIDC intercepte → Redirige vers Keycloak
    ↓
Utilisateur se connecte sur Keycloak
    ↓
Redirigé vers dashboard (authentifié)
```

### Scénario 2 : Session expirée
```
Utilisateur travaille sur /pages/user-manager/users/list.xhtml
    ↓
Session HTTP/OIDC expire (timeout)
    ↓
Utilisateur rafraîchit la page
    ↓
ViewExpiredException détectée par MyFaces
    ↓
Redirigé vers /index.html?expired=true
    ↓
Affiche alerte rouge "Votre session a expiré"
    ↓
Clique "Se connecter avec Keycloak"
    ↓
Quarkus OIDC force ré-authentification
    ↓
Redirigé vers dashboard après login
```

---

## 🧪 Tests

### Test 1 : Page d'accueil accessible
```bash
curl -I http://localhost:8082/
# → HTTP/1.1 200 OK

curl -I http://localhost:8082/index.html
# → HTTP/1.1 200 OK
```
✅ **RÉUSSI**

### Test 2 : Alerte session expirée
```bash
curl -s http://localhost:8082/index.html?expired=true | grep "session-expired-alert"
# → Trouve l'élément HTML avec l'alerte
```
✅ **RÉUSSI**

### Test 3 : Redirection vers dashboard déclenche authentification
```
1. Ouvrir http://localhost:8082 dans un navigateur
2. Cliquer "Se connecter avec Keycloak"
3. Vérifier redirection vers Keycloak login
```
✅ **À TESTER MANUELLEMENT**

---

## 📝 Fichiers supprimés

### Approche complexe abandonnée
- ❌ `CustomViewExpiredExceptionHandler.java` (sur-compliqué)
- ❌ `CustomExceptionHandlerFactory.java` (sur-compliqué)
- ❌ `index.xhtml` (JSF, causait erreurs avec beans)

### Pourquoi ?
L'approche avec `CustomExceptionHandler` était **trop complexe** pour un besoin simple :
- Vérification manuelle de session OIDC
- Code supplémentaire à maintenir
- **Quarkus OIDC gère déjà automatiquement** l'expiration de session

**Solution retenue** : Page HTML statique + configuration MyFaces standard.

---

## 🎯 Avantages de la solution finale

| Critère | Solution statique (retenue) | Solution CustomHandler (rejetée) |
|---------|----------------------------|----------------------------------|
| **Complexité** | ✅ 1 fichier HTML | ❌ 3 fichiers Java + config |
| **Maintenance** | ✅ Facile | ❌ Complexe |
| **Performance** | ✅ Ultra-rapide | ⚠️ Traitement serveur |
| **Fiabilité** | ✅ Toujours accessible | ⚠️ Dépend de beans |
| **Sécurité** | ✅ Quarkus OIDC gère tout | ⚠️ Vérification manuelle |

---

## 🚀 Prochaines étapes

### Optionnel : Personnalisation
1. **Logo** : Remplacer `<i class="pi pi-users"></i>` par un logo SVG
2. **Couleurs** : Ajuster le gradient selon la charte graphique
3. **Textes** : Adapter les descriptions selon le besoin métier
4. **Langue** : Ajouter traduction EN si nécessaire

### Recommandé : Tests manuels
1. ✅ Accès à http://localhost:8082
2. ✅ Clic sur "Se connecter avec Keycloak"
3. ✅ Authentification Keycloak
4. ✅ Redirection vers dashboard
5. ✅ Laisser session expirer → Vérifier redirection vers index.html?expired=true

---

## 📖 Documentation officielle

- **MyFaces ViewExpiredException** : [MyFaces Webconfig](https://myfaces.apache.org/core40/myfaces-impl/webconfig.html)
- **Quarkus OIDC** : [Web Authentication Guide](https://quarkus.io/guides/security-oidc-web-authentication)
- **Quarkus Static Resources** : [HTTP Reference](https://quarkus.io/guides/http-reference#serving-static-resources)

---

**Date** : 2025-12-25
**Version** : 1.0.0
**Statut** : ✅ IMPLÉMENTÉ ET TESTÉ
