From af4c332df8161470bfe03a6e0c67a26ffc58f6b4 Mon Sep 17 00:00:00 2001 From: lionsdev Date: Fri, 5 Dec 2025 16:23:42 +0000 Subject: [PATCH] fix(client): Corrections beans JSF et pages XHTML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UserListBean: correction getTotalCount(), searchTerm(), méthodes statistiques - RoleGestionBean: correction assignRoleToUser/revokeRoleFromUser, getUserRolesDTOs - Pages: correction paramètres hasSubmitAction, useParentForm, update IDs - assign.xhtml: simplification expression EL avec méthode dédiée --- .../manager/client/view/RoleGestionBean.java | 80 +++++++++++- .../manager/client/view/UserListBean.java | 44 +++++++ .../pages/user-manager/roles/assign.xhtml | 4 +- .../pages/user-manager/roles/list.xhtml | 12 +- .../pages/user-manager/users/create.xhtml | 1 + .../pages/user-manager/users/list.xhtml | 118 +++++++++++------- 6 files changed, 199 insertions(+), 60 deletions(-) diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/RoleGestionBean.java b/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/RoleGestionBean.java index b96a8bb..82b7a54 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/RoleGestionBean.java +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/RoleGestionBean.java @@ -3,6 +3,7 @@ package dev.lions.user.manager.client.view; import dev.lions.user.manager.client.service.RoleServiceClient; import dev.lions.user.manager.dto.role.RoleAssignmentDTO; import dev.lions.user.manager.dto.role.RoleDTO; +import dev.lions.user.manager.dto.user.UserDTO; import dev.lions.user.manager.enums.role.TypeRole; import jakarta.annotation.PostConstruct; import jakarta.faces.application.FacesMessage; @@ -67,13 +68,27 @@ public class RoleGestionBean implements Serializable { * Charger les rôles Realm */ public void loadRealmRoles() { + if (realmName == null || realmName.isEmpty()) { + LOGGER.warning("Realm non sélectionné, impossible de charger les rôles"); + addErrorMessage("Veuillez sélectionner un realm"); + return; + } + try { + LOGGER.info("Chargement des rôles Realm pour le realm: " + realmName); realmRoles = roleServiceClient.getAllRealmRoles(realmName); updateAllRoles(); - LOGGER.info("Chargement de " + realmRoles.size() + " rôles Realm"); + LOGGER.info("Chargement réussi: " + realmRoles.size() + " rôles Realm trouvés"); + if (realmRoles.isEmpty()) { + addErrorMessage("Aucun rôle Realm trouvé dans le realm: " + realmName); + } } catch (Exception e) { - LOGGER.severe("Erreur lors du chargement des rôles Realm: " + e.getMessage()); - addErrorMessage("Erreur lors du chargement des rôles Realm"); + String errorMsg = "Erreur lors du chargement des rôles Realm pour le realm '" + realmName + "': " + e.getMessage(); + LOGGER.severe(errorMsg); + LOGGER.log(java.util.logging.Level.SEVERE, "Exception complète", e); + addErrorMessage(errorMsg); + realmRoles = new ArrayList<>(); // Réinitialiser en cas d'erreur + updateAllRoles(); } } @@ -212,6 +227,53 @@ public class RoleGestionBean implements Serializable { } } + /** + * Attribuer un rôle à un utilisateur (depuis les paramètres de requête) + */ + public void assignRoleFromParams() { + FacesContext context = FacesContext.getCurrentInstance(); + String userId = context.getExternalContext().getRequestParameterMap().get("userId"); + String roleName = context.getExternalContext().getRequestParameterMap().get("roleName"); + + if (userId != null && roleName != null) { + assignRoleToUser(userId, roleName); + } else { + addErrorMessage("Paramètres manquants: userId ou roleName"); + } + } + + /** + * Révoquer un rôle d'un utilisateur (depuis les paramètres de requête) + */ + public void revokeRoleFromParams() { + FacesContext context = FacesContext.getCurrentInstance(); + String userId = context.getExternalContext().getRequestParameterMap().get("userId"); + String roleName = context.getExternalContext().getRequestParameterMap().get("roleName"); + + if (userId != null && roleName != null) { + revokeRoleFromUser(userId, roleName); + } else { + addErrorMessage("Paramètres manquants: userId ou roleName"); + } + } + + /** + * Obtenir les rôles RoleDTO correspondant aux noms de rôles de l'utilisateur + */ + public List getUserRolesDTOs(UserDTO user) { + if (user == null || user.getRealmRoles() == null || user.getRealmRoles().isEmpty()) { + return new ArrayList<>(); + } + + if (allRoles == null || allRoles.isEmpty()) { + return new ArrayList<>(); + } + + return allRoles.stream() + .filter(role -> user.getRealmRoles().contains(role.getName())) + .collect(java.util.stream.Collectors.toList()); + } + /** * Réinitialiser le formulaire */ @@ -224,8 +286,16 @@ public class RoleGestionBean implements Serializable { * Charger les realms disponibles */ private void loadRealms() { - // TODO: Implémenter la récupération des realms depuis Keycloak - availableRealms = List.of("master", "btpxpress", "unionflow"); + try { + // Pour l'instant, utiliser les realms de la configuration + // TODO: Implémenter la récupération des realms depuis Keycloak via un endpoint API + availableRealms = List.of("master", "lions-user-manager", "btpxpress", "test-realm"); + LOGGER.info("Realms disponibles chargés: " + availableRealms.size()); + } catch (Exception e) { + LOGGER.severe("Erreur lors du chargement des realms: " + e.getMessage()); + // Fallback sur une liste par défaut + availableRealms = List.of("master"); + } } // Méthodes utilitaires diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/UserListBean.java b/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/UserListBean.java index 4b4c77b..2770aaa 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/UserListBean.java +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/java/dev/lions/user/manager/client/view/UserListBean.java @@ -185,6 +185,50 @@ public class UserListBean implements Serializable { } } + /** + * Obtenir le nombre d'utilisateurs actifs + */ + public long getActiveUsersCount() { + if (users == null || users.isEmpty()) { + return 0; + } + return users.stream() + .filter(user -> user.getEnabled() != null && user.getEnabled()) + .count(); + } + + /** + * Obtenir le nombre d'utilisateurs désactivés + */ + public long getDisabledUsersCount() { + if (users == null || users.isEmpty()) { + return 0; + } + return users.stream() + .filter(user -> user.getEnabled() != null && !user.getEnabled()) + .count(); + } + + /** + * Obtenir le pourcentage d'utilisateurs actifs + */ + public int getActiveUsersPercentage() { + if (totalRecords == 0) { + return 0; + } + return (int) Math.round((double) getActiveUsersCount() / totalRecords * 100); + } + + /** + * Obtenir le pourcentage d'utilisateurs désactivés + */ + public int getDisabledUsersPercentage() { + if (totalRecords == 0) { + return 0; + } + return (int) Math.round((double) getDisabledUsersCount() / totalRecords * 100); + } + /** * Charger les realms disponibles */ diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/assign.xhtml b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/assign.xhtml index 5c1b1c8..47cb98d 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/assign.xhtml +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/assign.xhtml @@ -22,9 +22,7 @@ - - - + diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml index 62abaa5..064281b 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/roles/list.xhtml @@ -48,7 +48,7 @@ + update=":formRealmRoles:realmRolesPanel :formClientRoles:clientRolesPanel" /> @@ -59,7 +59,7 @@ + update=":formClientRoles:clientRolesPanel" /> @@ -131,7 +131,9 @@ - + + + @@ -148,7 +150,9 @@ - + + + diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml index 47f4c76..ae193cd 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/create.xhtml @@ -25,6 +25,7 @@ + diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml index 2153859..1aa2987 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml @@ -29,55 +29,78 @@ - +
-
- - - - - - -
-
- - - - - - -
-
- - - - - - -
-
- - - - - - -
-
- - -
- - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- -
- + + + +
+ + + + + + + +
+ + +
@@ -90,9 +113,8 @@ - -
+
+ -