# lions-user-manager-client-quarkus-primefaces-freya > Interface web d'administration — Quarkus + JSF + PrimeFaces Freya ## Dépôt Git `https://git.lions.dev/lionsdev/lions-user-manager-client-quarkus-primefaces-freya` --- ## Responsabilités - Interface d'administration des utilisateurs et rôles Keycloak - Authentification SSO via OIDC (Keycloak) - Communication avec le backend via MicroProfile REST Client - Dashboard, gestion CRUD, audit, synchronisation, assignation de realms --- ## Pages | Page | Bean | Description | |------|------|-------------| | `/pages/user-manager/dashboard.xhtml` | `DashboardBean` | Vue d'ensemble et KPIs (composant `lions-stat-card`) | | `/pages/user-manager/users/list.xhtml` | `UserListBean` | Liste paginée avec filtres et export CSV | | `/pages/user-manager/users/create.xhtml` | `UserCreationBean` | Formulaire de création | | `/pages/user-manager/users/edit.xhtml` | `UserEditBean` | Édition d'un utilisateur | | `/pages/user-manager/users/view.xhtml` | `UserViewBean` | Détail utilisateur | | `/pages/user-manager/users/profile.xhtml` | `UserProfilBean` | Profil connecté | | `/pages/user-manager/roles/list.xhtml` | `RoleListBean` | Gestion des rôles par realm | | `/pages/user-manager/audit/logs.xhtml` | `AuditLogsBean` | Consultation des logs d'audit | | `/pages/user-manager/sync/dashboard.xhtml` | `SyncDashboardBean` | État et pilotage des synchronisations | | `/pages/user-manager/settings.xhtml` | `SettingsBean` | Paramètres utilisateur | | `/pages/user-manager/help.xhtml` | — | Base de connaissance opérationnelle LUM | | `/pages/admin/realm-assignments.xhtml` | `RealmAssignmentBean` | Assignation utilisateurs/realms | Toutes les pages utilisent les composants partagés `lions-faces-layout:1.0.4` (refonte UI 2026-04) : `lions-page-header`, `lions-card`, `lions-stat-card`, `lions-empty-state`. --- ## Stack | Composant | Technologie | |-----------|-------------| | Framework | Quarkus 3.27.3 LTS + MyFaces (Servlet) | | UI | PrimeFaces 14.0.5 (Jakarta) | | Thème | Freya Enterprise | | Composants partagés | `lions-faces-layout:1.0.4` (layout Freya + OIDC beans + composants `lions-page-header`, `lions-card`, `lions-stat-card`, `lions-empty-state`) | | Auth | `quarkus-oidc` (Keycloak) + PKCE | | REST Client | MicroProfile REST Client (`quarkus-rest-client-jackson`) | | Token Propagation | `quarkus-rest-client-oidc-token-propagation` | --- ## Développement local ### Prérequis - Java 21, Maven 3.9+ - Keycloak sur `localhost:8180` (realm `lions-user-manager` configuré) - Backend `server-impl` démarré sur `localhost:8081` ### Démarrage ```bash mvn quarkus:dev ``` Application disponible sur : `http://localhost:8082` ### Configuration dev Fichier : `src/main/resources/application-dev.properties` ```properties quarkus.http.port=8082 quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager lions.user.manager.backend.url=http://localhost:8081 ``` --- ## Configuration production Fichier : `src/main/resources/application-prod.properties` | Variable | Description | |----------|-------------| | `KEYCLOAK_AUTH_SERVER_URL` | URL du realm Keycloak | | `KEYCLOAK_CLIENT_ID` | Client OIDC (défaut : `lions-user-manager-client`) | | `OIDC_ENCRYPTION_SECRET` | Secret de chiffrement des tokens (32 caractères min) | | `LIONS_USER_MANAGER_BACKEND_URL` | URL de l'API backend | --- ## Build ```bash # Build standard (développement) mvn clean package -DskipTests # Build production mvn clean package -P prod -DskipTests ``` --- ## Déploiement (lionsctl) ```bash lionsctl pipeline \ -u https://git.lions.dev/lionsdev/lions-user-manager-client-quarkus-primefaces-freya \ -b main -j 21 -e production -c k1 -p prod ``` **Pipeline** : clone → `mvn package -P prod` → `docker build -f Dockerfile` (racine, fast-jar, `ubi8/openjdk-21:1.21`, UID 1001) → push `registry.lions.dev` → `kubectl apply` → health check **URL prod** : `https://users.lions.dev` **Pré-requis infrastructure** avant pipeline : - Deployment Helm existant supprimé au préalable (selector immutable) - Après pipeline : patcher le deployment avec `envFrom: [lions-user-manager-keycloak-eso, lions-user-manager-client-oidc-eso]` pour injecter `KEYCLOAK_CLIENT_SECRET` depuis ESO/Vault (lionsctl n'injecte pas les secrets OIDC par défaut) - Service selector à repatcher (retirer les labels Helm `app.kubernetes.io/*`) --- ## Structure ``` src/main/ ├── java/dev/lions/user/manager/client/ │ ├── bean/ # Beans JSF (@Named, @ViewScoped / @SessionScoped) │ └── client/ # REST Clients (UserRestClient, RoleRestClient, ...) └── resources/ ├── META-INF/resources/ │ ├── templates/ │ │ └── components/ # Composants PrimeFaces réutilisables │ ├── dashboard.xhtml │ ├── users/ │ ├── roles/ │ ├── audit/ │ ├── sync/ │ └── realms/ ├── application.properties ├── application-dev.properties └── application-prod.properties ``` --- ## Licence Propriétaire — Lions Dev © 2026