namespace Flaro.Core.Users; /// Ein Benutzerkonto. /// /// /// Mehrbenutzer von Anfang an — auch wenn der erste Server nur einen hat. /// Fortschritt und Gesehen-Status je Benutzer nachträglich einzuziehen wäre /// ein Umbau am Datenmodell und an jeder Abfrage darauf, kein Zusatz. /// public sealed class User { /// Zeitlich geordnet, damit der Index nicht zerfasert. public Guid Id { get; init; } = Guid.CreateVersion7(); public required string UserName { get; set; } /// Im PHC-Format, siehe . public required string PasswordHash { get; set; } public bool IsAdministrator { get; set; } /// Die bevorzugte Sprache — null heisst: die des Servers. /// /// /// Und sie ist nicht kostenlos. Metadaten werden in der Sprache des /// Servers geholt und gespeichert. Wer eine andere wählt, bekommt, was in /// der Übersetzungstabelle liegt — und für den Rest die Serversprache. /// Darauf wird beim Umstellen deutlich hingewiesen; es stillschweigend /// halb zu übersetzen wäre schlechter als gar nicht. /// public string? Language { get; set; } public DateTimeOffset CreatedAt { get; init; } = DateTimeOffset.UtcNow; }