namespace MaBibli.Shared.Dtos;

/// <summary>
/// Identité de la personne connectée, telle que fournie par les en-têtes SSOwat de YunoHost.
/// </summary>
/// <remarks>
/// En développement il n'y a pas de SSOwat : un utilisateur simulé est configuré
/// (<c>Identite:UtilisateurSimule</c>), conformément à CLAUDE.md qui demande de simuler
/// plutôt que de désactiver l'authentification.
/// </remarks>
public record UtilisateurCourant
{
    /// <summary><c>YNH_USER</c>. <c>null</c> si l'identité n'a pas pu être déterminée.</summary>
    public string? Identifiant { get; init; }

    /// <summary><c>YNH_USER_EMAIL</c>.</summary>
    public string? Email { get; init; }

    /// <summary><c>YNH_USER_FULLNAME</c> — évite une requête LDAP pour l'affichage.</summary>
    public string? NomComplet { get; init; }

    /// <summary>Vrai si l'identité provient de la configuration de développement, pas de SSOwat.</summary>
    public bool Simule { get; init; }

    /// <summary>Libellé à afficher, avec repli sur l'identifiant.</summary>
    public string Affichage =>
        NomComplet is { Length: > 0 } ? NomComplet : Identifiant ?? "inconnu";

    public static readonly UtilisateurCourant Anonyme = new();
}
