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