Files
btpxpress-frontend/src/main/java/dev/lions/btpxpress/view/UserSessionBean.java
dahoud b749f2df37 feat: Migration complète vers Quarkus PrimeFaces Freya
Migration du frontend React/Next.js vers Quarkus + PrimeFaces Freya 5.0.0

Dashboard:
- Extension de BtpXpressApiClient avec tous les endpoints dashboard
- Création de DashboardService pour récupérer les données API
- Refactorisation DashboardView : uniquement données réelles de l'API
- Restructuration dashboard.xhtml avec tous les aspects métiers BTP
- Suppression complète de toutes les données fictives

Topbar:
- Amélioration du menu profil utilisateur avec header professionnel
- Ajout UserSessionBean pour gérer les informations utilisateur
- Styles CSS personnalisés pour une disposition raffinée
- Badges de notifications conditionnels

Configuration:
- Intégration du thème Freya 5.0.0-jakarta
- Configuration OIDC pour Keycloak (security.lions.dev)
- Gestion des erreurs HTTP 431 (headers size)
- Support du format Fcfa avec séparateurs d'espaces

Converters:
- Création de FcfaConverter pour formater les montants en Fcfa avec espaces (x xxx xxx format)

Code Quality:
- Code entièrement documenté en français avec Javadoc exemplaire
- Respect du principe Java 'Write once, use many times'
- Logging complet pour le débogage
- Gestion d'erreurs robuste
2025-11-01 19:55:30 +00:00

80 lines
2.2 KiB
Java

package dev.lions.btpxpress.view;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.SessionScoped;
import jakarta.inject.Named;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* Bean de session pour gérer les informations de l'utilisateur connecté.
*
* <p>Ce bean stocke les informations de session de l'utilisateur authentifié,
* telles que le nom, l'email, l'avatar, et les statistiques rapides.</p>
*
* @author BTP Xpress Team
* @version 1.0
*/
@Named("userSession")
@SessionScoped
@Getter
@Setter
public class UserSessionBean implements Serializable {
private static final long serialVersionUID = 1L;
private String nomComplet;
private String email;
private String avatarUrl;
private String role;
private int nombreNotificationsNonLues;
private int nombreMessagesNonLus;
/**
* Initialise les données de l'utilisateur connecté.
*/
@PostConstruct
public void init() {
// TODO: Récupérer depuis le token JWT ou la session OIDC
nomComplet = "Jean Dupont";
email = "jean.dupont@btpxpress.com";
avatarUrl = "/resources/freya-layout/images/avatar-profilemenu.png";
role = "Gestionnaire de Projets";
nombreNotificationsNonLues = 5;
nombreMessagesNonLus = 3;
}
/**
* Retourne les initiales de l'utilisateur pour l'avatar.
*
* @return Les initiales (ex: "JD" pour "Jean Dupont")
*/
public String getInitiales() {
if (nomComplet == null || nomComplet.trim().isEmpty()) {
return "U";
}
String[] parts = nomComplet.trim().split("\\s+");
if (parts.length >= 2) {
return String.valueOf(parts[0].charAt(0)).toUpperCase() +
String.valueOf(parts[1].charAt(0)).toUpperCase();
} else if (parts.length == 1) {
return parts[0].substring(0, Math.min(2, parts[0].length())).toUpperCase();
}
return "U";
}
/**
* Action de déconnexion.
*
* @return La page de login
*/
public String deconnecter() {
// TODO: Implémenter la déconnexion OIDC/Keycloak
return "/login?faces-redirect=true";
}
}