namespace MaBibli.Shared.Dtos; /// /// Identité de la personne connectée, telle que fournie par les en-têtes SSOwat de YunoHost. /// /// /// En développement il n'y a pas de SSOwat : un utilisateur simulé est configuré /// (Identite:UtilisateurSimule), conformément à CLAUDE.md qui demande de simuler /// plutôt que de désactiver l'authentification. /// public record UtilisateurCourant { /// YNH_USER. null si l'identité n'a pas pu être déterminée. public string? Identifiant { get; init; } /// YNH_USER_EMAIL. public string? Email { get; init; } /// YNH_USER_FULLNAME — évite une requête LDAP pour l'affichage. public string? NomComplet { get; init; } /// Vrai si l'identité provient de la configuration de développement, pas de SSOwat. public bool Simule { get; init; } /// Libellé à afficher, avec repli sur l'identifiant. public string Affichage => NomComplet is { Length: > 0 } ? NomComplet : Identifiant ?? "inconnu"; public static readonly UtilisateurCourant Anonyme = new(); }