From 868f2883813e69b2e96cce0e0775a037b8f9d21e Mon Sep 17 00:00:00 2001 From: lionsdev Date: Thu, 23 Apr 2026 22:50:38 +0000 Subject: [PATCH] refactor(ui): adopt lions-* shared components (page-header, card, stat-card, empty-state) + add help page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 12 pages (dashboard, users/list|create|edit|view|profile, roles/list, audit/logs, sync/dashboard, settings, admin/realm-assignments) migrated from custom layouts to shared lions-faces-layout components - New help.xhtml (Base de connaissance opérationnelle LUM) - user-data-table: drop resizableColumns+scrollable, replace 'Aucun rôle' span with p:tag --- .../pages/admin/realm-assignments.xhtml | 128 ++---- .../pages/user-manager/audit/logs.xhtml | 100 ++--- .../pages/user-manager/dashboard.xhtml | 201 ++++------ .../resources/pages/user-manager/help.xhtml | 105 +++++ .../pages/user-manager/roles/list.xhtml | 146 +++---- .../pages/user-manager/settings.xhtml | 247 ++++++------ .../pages/user-manager/sync/dashboard.xhtml | 375 ++++++++++-------- .../pages/user-manager/users/create.xhtml | 251 +++++------- .../pages/user-manager/users/edit.xhtml | 67 ++-- .../pages/user-manager/users/list.xhtml | 181 +++------ .../pages/user-manager/users/profile.xhtml | 183 +++------ .../pages/user-manager/users/view.xhtml | 314 ++++++--------- .../shared/tables/user-data-table.xhtml | 4 +- 13 files changed, 1019 insertions(+), 1283 deletions(-) create mode 100644 src/main/resources/META-INF/resources/pages/user-manager/help.xhtml diff --git a/src/main/resources/META-INF/resources/pages/admin/realm-assignments.xhtml b/src/main/resources/META-INF/resources/pages/admin/realm-assignments.xhtml index 368c49a..2f647e5 100644 --- a/src/main/resources/META-INF/resources/pages/admin/realm-assignments.xhtml +++ b/src/main/resources/META-INF/resources/pages/admin/realm-assignments.xhtml @@ -12,95 +12,48 @@
- -
-
-
-
- -
-

Affectation des Realms

-

Gérer les permissions d'administration par realm (contrôle multi-tenant)

-
-
- -
-
-
+ + + + + + + + - -
-
-
-
-
Total Affectations
-
#{realmAssignmentBean.totalAssignments}
-
-
- -
-
- Assignations configurées -
-
+ + + + + + + + + + + + + + + + + + + + + + + + -
-
-
-
-
Affectations Actives
-
#{realmAssignmentBean.activeAssignmentsCount}
-
-
- -
-
- En cours de validité -
-
+ + + + -
-
-
-
-
Super Admins
-
#{realmAssignmentBean.superAdminsCount}
-
-
- -
-
- Peuvent gérer tous les realms -
-
- - -
-
-
-
Affectations Actuelles
- -
- - + @@ -228,8 +181,7 @@
-
-
+
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/audit/logs.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/audit/logs.xhtml index 16e410f..72c6606 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/audit/logs.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/audit/logs.xhtml @@ -10,27 +10,19 @@
-
- - - - - - -
- - - - - - - -
-
-
-
-
- + + + + + +
+ +
+
+
+
@@ -158,78 +150,56 @@ paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" currentPageReportTemplate="{startRecord}-{endRecord} sur {totalRecords}" emptyMessage="Aucun log d'audit trouvé. Cliquez sur Rechercher pour lancer une requête." - styleClass="w-full" stripedRows="true" size="small"> + stripedRows="true" size="small" responsiveLayout="scroll" + tableStyle="table-layout: fixed; width: 100%"> - + - + - + - - - - #{log.typeAction} + + + + #{log.typeAction} -
- - #{log.acteurUsername} -
+ #{log.acteurUsername}
- - - - - - - + #{log.ressourceType} - -
- - - - -
+ + + + - - - #{log.description} - - - - - + + #{log.description} - - - #{log.ipAddress} - - - - - + + #{log.ipAddress} - + diff --git a/src/main/resources/META-INF/resources/pages/user-manager/dashboard.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/dashboard.xhtml index 63b50eb..93cd7d0 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/dashboard.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/dashboard.xhtml @@ -9,136 +9,99 @@
-
- - - - - - - - - - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - -
-
- -
-
- -
-
- -
-
- -
+ + +
+
+
- +
+ +
+
+ +
+
+ +
+
- + - - - + - -
-
- Version - 1.0.0 + + + +
+
+ Version du Layout + 1.0.4
-
- Realm Keycloak - #{dashboardBean.realmName} +
+ Realm Keycloak + #{dashboardBean.realmName}
-
- Statut - +
+ Statut du Noyau +
-
- Application - Lions User Manager -
-
- Environnement - Développement -
-
- Base de données - Keycloak Admin API -
-
- Framework - Quarkus, PrimeFaces Freya +
+ Environnement +
- - +
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/help.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/help.xhtml new file mode 100644 index 0000000..2703c3d --- /dev/null +++ b/src/main/resources/META-INF/resources/pages/user-manager/help.xhtml @@ -0,0 +1,105 @@ + + + Base de Connaissance Opérationnelle + + +
+
+ + + + +
+
Support Opérationnel Lions User Manager (LUM)
+

+ Cette plateforme centralise la gestion des accès pour l'ensemble de l'écosystème LionsDev. + En tant qu'administrateur ou gestionnaire, vos actions ont un impact direct sur la sécurité des SI. +

+ +
+ +
+
+
+ +
+
+
Cycle de vie d'un compte
+

+ La création d'un agent nécessite un email vérifié. Un compte inactif pendant plus de 90 jours est automatiquement désactivé par les politiques de purge. +

+ +
+
+
+ + +
+
+
+ +
+
+
Attribution des Habilitations
+

+ LUM distingue les rôles de plateforme (admin, system) des rôles applicatifs. Les rôles applicatifs sont propagés via les claims OIDC vers les clients. +

+ +
+
+
+ + +
+
+
+ +
+
+
Analyse d'Audit et Sécurité
+

+ En cas de détection d'attaques brute-force, utilisez le tableau 'Audit History' pour identifier les Adresses IP sources et déclencher une suspension temporaire du Realm. +

+ +
+
+
+ + +
+
+
+ +
+
+
Réinitialisation de Mot de Passe
+

+ L'administrateur peut déclencher une "Update Password" action OIDC. L'utilisateur devra obligatoirement changer son secret lors du prochain flux de connexion. +

+ +
+
+
+
+ +
+
+
+
Besoin d'une expertise complémentaire ?
+
L'équipe Support Sécurité est disponible pour vos questions sur l'IAM.
+
+ +
+
+
+
+
+
+
+ +
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml index 9567ad5..2b02c82 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml @@ -8,39 +8,36 @@ Gestion des Rôles - Lions User Manager - - - - - - - -
- - -
-
-
-
+
+ + + + + + +
+ + +
+
+
+
- - -
- -
- -
Filtres
-
-
-
-
- +
+ + + + + +
+
+ @@ -48,11 +45,9 @@ update=":formRealmRoles :formClientRoles :formFilters:clientFilter :growlMessages" />
-
- -
-
- + +
+ @@ -61,11 +56,9 @@ update=":formClientRoles :growlMessages" />
-
- -
-
- + +
+ @@ -76,27 +69,18 @@
-
- -
- - -
- - - -
-
- - Rôles Realm -
- -
-
-
+ + +
+
+ + + + + +
-
+
@@ -109,34 +93,26 @@ -
+
Aucun rôle Realm trouvé
- - - + +
- - -
- - - -
-
- - Rôles Client -
- -
-
-
+ + +
+ + + + + +
-
+
@@ -149,7 +125,7 @@ -
+
Sélectionnez un client pour voir ses rôles @@ -160,9 +136,9 @@
- - - + + +
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/settings.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/settings.xhtml index a64ef56..5753bc9 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/settings.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/settings.xhtml @@ -1,131 +1,116 @@ - - - - - Paramètres - Lions User Manager - - - - - - - - - -
- -
-
-
Informations du compte
- - - - - - - - - - - - - - - -
-
- - -
-
-
Préférences
- -
-
- Thème des composants - - - - -
-
- Mode sombre - - - - - -
-
- Style d'input - - - - - -
-
-
-
-
- - -
-
-
Actions
-
- - - - - - - - - -
-
-
-
-
- -
- + + + Paramètres de Gouvernance + + +
+
+ + + + +
+ +
+
+
+

Identification du Realm

+ +
+
+
+ Nom du Realm + lions-user-manager +
+
+ Environnement + Production Centralisée +
+
+ Émetteur (Issuer) + #{userSessionBean.issuer} +
+
+
+ + + Ouvrir la console d'administration Keycloak + +
+
+
+ + +
+
+

Politiques de Sécurité Appliquées

+
+
+ +
+
Politique de Mots de Passe
+
Lions Standard : 12 car. min, complexité élevée, rotation 90j.
+
+
+
+ +
+
Inactivité et Session
+
Expiration session idle : 30 min. Durée max : 10h.
+
+
+
+ +
+
Multi-Facteurs (MFA)
+
Activé pour les privilèges élevés (Roles: admin, user_manager).
+
+
+
+
+
+ + +
+
+

Conformité et Audit

+

Tous les flux de gestion sont tracés conformément à la charte de sécurité LionsDev.

+
+
+
+
Rétention des logs
+
180 Jours
+ Base de données d'audit locale +
+
+
+
+
Fréquence de Sync
+
Temps Réel
+ Synchronisation via SPI Keycloak +
+
+
+
+
Niveau de Détail
+
Intégral
+ Capture des payloads de modification +
+
+
+
+
+
+
+
+
+
+ +
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/sync/dashboard.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/sync/dashboard.xhtml index 42e71b0..cf917bb 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/sync/dashboard.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/sync/dashboard.xhtml @@ -1,171 +1,206 @@ - - - - Synchronisation Keycloak - Lions User Manager - - - - - - -
- - - - - - - - -
- -
- -
-
-
État de Keycloak
-
-
- -
-
- - #{syncDashboardBean.keycloakStatusLabel eq 'UP' ? 'En Ligne' : 'Hors Ligne'} - - Statut du service -
- - - -
- - - -
-
- Message: - #{syncDashboardBean.keycloakStatusMessage} -
-
- Version: - #{syncDashboardBean.keycloakVersion} -
-
-
-
- - -
-
-
Actions de Synchronisation
-

Lancez la synchronisation des données depuis Keycloak vers la base - locale.

- -
-
-
- - Utilisateurs -
- -
- -
-
- - Rôles -
- -
-
-
-
- - -
-
-
-
Dernière Synchronisation
- -
- -
-
- Date: - #{syncDashboardBean.lastSyncDate} -
-
- Statut: - -
-
- Éléments traités: - #{syncDashboardBean.lastSyncItemsProcessed} -
-
-
-
- - -
-
-
-
Cohérence des Données
- -
- - -
- Résultat: - -
-
- Utilisateurs Keycloak: - #{syncDashboardBean.consistencyResult.usersKeycloakCount} -
-
- Utilisateurs locaux: - #{syncDashboardBean.consistencyResult.usersLocalCount} -
-
- Éléments manquants: - - #{syncDashboardBean.consistencyMissingCount} - -
-
- - -
- - Cliquez sur "Vérifier" pour analyser la cohérence des données. -
-
-
-
-
-
-
- + + + + Synchronisation Keycloak - Lions User Manager + + + + + +
+ + + + + + + + + + + + + + + +
+
+ + #{syncDashboardBean.keycloakStatusLabel eq 'UP' ? 'En Ligne' : 'Hors Ligne'} + + +
+ Le serveur d'identité est opérationnel +
+ + + +
+
+ Message de retour + #{syncDashboardBean.keycloakStatusMessage} +
+
+ Version du noyau + #{syncDashboardBean.keycloakVersion} +
+
+
+ + + + + + + +

+ Lancez manuellement la récupération des données depuis Keycloak pour mettre à jour la base locale LUM. +

+ +
+
+
+
+ +
+ Répertoire Utilisateurs +
+ +
+ +
+
+
+ +
+ Référentiel des Rôles +
+ +
+
+
+ + + + + + + + + + +
+
+
+ + Date et heure +
+ #{syncDashboardBean.lastSyncDate} +
+ +
+
+ + Statut de sortie +
+ +
+ +
+ Objets traités avec succès + #{syncDashboardBean.lastSyncItemsProcessed} +
+
+
+ + + + + + + + + +
+ +
+ État de Synchronisation + +
+ + + +
+
+
+
+ +
+
+ Keycloak + #{syncDashboardBean.consistencyResult.usersKeycloakCount} +
+
+
+
+
+
+ +
+
+ Base Locale (LUM) + #{syncDashboardBean.consistencyResult.usersLocalCount} +
+
+
+
+ + + + +
+
+
+ +
+ Écarts de synchronisation identifiés +
+ + #{syncDashboardBean.consistencyMissingCount} + +
+
+
+ + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml index 726908e..badc0dc 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml @@ -8,22 +8,17 @@
- -
- - - - - - - - - Retour à la liste - - - -
+ +
+ + + + + + + +
@@ -47,179 +42,125 @@
-
-
-

- - Informations de l'Utilisateur -

- -
- -
-
-

- - Informations de Base -

- -
- - * +
+ + + + +
+ +
+

+ + Informations de Base +

+
+
+ - - - - Identifiant unique de connexion + styleClass="w-full" required="true" placeholder="ex: jdupont" /> +
- -
- - * +
+ - - - + styleClass="w-full" required="true" placeholder="ex: jean.dupont@lions.dev" /> +
- -
- - * +
+ - - - + styleClass="w-full" required="true" placeholder="Jean" /> +
- -
- - * +
+ - - - + styleClass="w-full" required="true" placeholder="Dupont" /> +
- - -
-
-

- - Mot de Passe -

- -
- - * + + +
+

+ + Sécurité du Compte +

+
+
+ - - - - Au moins 8 caractères + styleClass="w-full" required="true" feedback="true" toggleMask="true" /> +
- -
- - * - - +
+ + +
- -
-

- - Configuration -

- -
- - - - +
+ + +
+

+ + Paramètres Système +

+
+ + + + +
+
+
+ +
- -
-
- - -
-
- - -
+
+ +
-
-
- - -
-
+ + + +
- - - - + - +
- +
- - - - -
+ + +
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/users/edit.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/users/edit.xhtml index 23310e9..2c7288c 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/users/edit.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/users/edit.xhtml @@ -13,36 +13,43 @@ Modifier Utilisateur - Lions User Manager - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - +
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml index 670800b..59dfa6a 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml @@ -8,18 +8,16 @@ - - + - +
- + + styleClass="ui-button-primary" outcome="/pages/user-manager/users/create" />
@@ -33,115 +31,40 @@
- -
-
Statistiques des Utilisateurs
-
- - -
-
-
-
-
Total Utilisateurs
-
#{userListBean.kpiTotalUsers}
-
-
- -
-
-
- - Utilisateurs dans le realm -
-
-
- - -
-
-
-
-
Utilisateurs Actifs
-
#{userListBean.activeUsersCount}
-
-
- -
-
-
- - - #{userListBean.activeUsersPercentage}% - - Taux d'activation -
- -
-
- - -
-
-
-
-
Utilisateurs Désactivés
-
#{userListBean.disabledUsersCount}
-
-
- -
-
-
- - - #{userListBean.disabledUsersPercentage}% - - Taux de désactivation -
- -
-
- - -
-
-
-
-
Realm Actuel
-
- #{userListBean.realmName}
-
-
- -
-
-
- - Realm Keycloak -
-
-
+ + + + + + + + + + + + + + + + + + + + + + + +
-
-
- -
Recherche et Filtres
-
+ + + -
+
-
+
+
-
-
- -
Actions Rapides
-
- -
+ + + + +
- +
-
-
- +
-
+
diff --git a/src/main/resources/META-INF/resources/pages/user-manager/users/profile.xhtml b/src/main/resources/META-INF/resources/pages/user-manager/users/profile.xhtml index ea534fd..8145930 100644 --- a/src/main/resources/META-INF/resources/pages/user-manager/users/profile.xhtml +++ b/src/main/resources/META-INF/resources/pages/user-manager/users/profile.xhtml @@ -12,29 +12,21 @@
- -
-
-
-

- - Mon Profil -

- - - Retour au tableau de bord - -
-
-
+ + + + + + + + - -
-
+ + + + +
@@ -47,25 +39,11 @@

#{userSessionBean.fullName}

- -

- - #{userSessionBean.email} -

+ - -
- - - Connecté - -
- - -
- - #{userSessionBean.primaryRole} - +
+ +
@@ -120,54 +98,29 @@
- +
-
+
- - -
-
- -
- -

- - - - - -

-
- -
- -
- +
-
-
+
- -
-
-

- - Informations de Session OIDC -

+ + + + + +
@@ -198,7 +151,7 @@
- +
@@ -253,17 +206,13 @@
-
+ - -
-
-

- - Statistiques d'Activité -

+ + + + +
@@ -310,18 +259,13 @@
-
-
+ - -
-
-

- - Actions Rapides -

+ + + + +
@@ -364,36 +308,31 @@ Sessions et Sécurité -
- - - + + + + + - - - - - - - -
+ + +
-
-
+
-
-
-
-

- - Profil Utilisateur -

- - - Retour à la liste - -
-
-
+ + + + + + + + - -
-
-
+ + + + + + +
@@ -62,37 +55,16 @@

@#{userProfilBean.user.username}

- -

- - #{userProfilBean.user.email} - - - -

+ - -
- - - - Actif - - - - - - Inactif - - +
+ +
- -
- - #{userProfilBean.primaryRoleName} - -
@@ -101,60 +73,63 @@
-

- - Informations Personnelles -

+
+

+ + Informations Personnelles +

-
- -

#{userProfilBean.user.username}

-
- -
- -

#{userProfilBean.user.prenom}

-
- -
- -

#{userProfilBean.user.nom}

-
- -
- -
-

#{userProfilBean.user.email}

- - - - - - -
-
- -
- -

#{userProfilBean.user.telephone}

+ +

#{userProfilBean.user.username}

-
- -
- -

#{userProfilBean.user.langue}

+
+ +

#{userProfilBean.user.prenom}

- + +
+ +

#{userProfilBean.user.nom}

+
+ +
+ +
+

#{userProfilBean.user.email}

+ + + + + + +
+
+ + +
+ +

#{userProfilBean.user.telephone}

+
+
+ + +
+ +

#{userProfilBean.user.langue}

+
+
+
-

- - Rôles et Permissions -

+
+

+ + Rôles et Permissions +

@@ -162,7 +137,7 @@ - + @@ -175,49 +150,33 @@
- - + +
-
- -

#{userProfilBean.primaryRoleName}

-
- -
- -
- - - - - - -
+
-
-
+ + + + + + + - -
-
-

- - Informations du Compte -

- -
+
-

Contact et Organisation

+
+

+ + Contact et Organisation +

@@ -259,10 +218,15 @@

#{userProfilBean.user.ville}

+
-

Activité et Sécurité

+
+

+ + Activité et Sécurité +

@@ -303,7 +267,7 @@
- +
@@ -311,17 +275,13 @@
-
- - -
-
-

- - Actions -

+ + + + + + +
@@ -333,17 +293,17 @@ Gestion du Profil
- + - - Modifier l'utilisateur - + @@ -370,74 +330,58 @@ Gestion du Compte -
- + - + - + - + -
-
-
- + + - + -
-
-
- -

Utilisateur non trouvé

-

L'utilisateur demandé n'existe pas ou n'a pas pu être chargé.

- - - Retour à la liste - -
+ + + +
+

Utilisateur non trouvé

+

L'utilisateur demandé n'existe pas ou n'a pas pu être chargé.

+
-
+
diff --git a/src/main/resources/META-INF/resources/templates/components/shared/tables/user-data-table.xhtml b/src/main/resources/META-INF/resources/templates/components/shared/tables/user-data-table.xhtml index 64bd04d..a3aafd3 100644 --- a/src/main/resources/META-INF/resources/templates/components/shared/tables/user-data-table.xhtml +++ b/src/main/resources/META-INF/resources/templates/components/shared/tables/user-data-table.xhtml @@ -77,7 +77,7 @@ rowsPerPageTemplate="10,20,50,100" currentPageReportTemplate="Affichage {startRecord}-{endRecord} sur {totalRecords}" emptyMessage="#{emptyMessage}" reflow="true" responsiveLayout="scroll" lazy="#{not empty lazy and lazy}" - sortMode="multiple" resizableColumns="true" scrollable="true"> + sortMode="multiple">
@@ -170,7 +170,7 @@ - Aucun rôle +