using System; using System.Collections.Generic; namespace zero.Core.Entities { public class User : DatabaseEntity, IUser { /// public bool IsSuper { get; set; } /// public string Email { get; set; } /// public string PasswordHash { get; set; } /// public string SecurityStamp { get; set; } /// public Media Avatar { get; set; } /// public string LanguageId { get; set; } /// public List RoleIds { get; set; } = new List(); /// public List Claims { get; set; } = new List(); /// public string PasswordResetToken { get; set; } /// public DateTimeOffset? PasswordResetTokenExpirationDate { get; set; } /// public int FailedPasswordAttempts { get; set; } /// public bool IsLockedOut { get; set; } /// public DateTimeOffset? LockoutEndDate { get; set; } /// public bool TwoFactorEnabled { get; set; } /// public string TwoFactorAuthenticatorKey { get; set; } /// public List TwoFactorRecoveryCodes { get; set; } = new List(); } public interface IUser : IDatabaseEntity { /// /// sudo. /// The user who created the instance. /// bool IsSuper { get; set; } /// /// E-Mail address which is also used as the username /// string Email { get; set; } /// /// The password hash /// string PasswordHash { get; set; } /// /// The security stamp /// string SecurityStamp { get; set; } /// /// Avatar image /// Media Avatar { get; set; } /// /// Backoffice display language /// string LanguageId { get; set; } /// /// The roles of the user /// List RoleIds { get; set; } /// /// The user's claims, for use in claims-based authentication. /// List Claims { get; set; } /// /// A hash which is used to validate a password-change request /// string PasswordResetToken { get; set; } /// /// The date when the current password-reset hash expires /// DateTimeOffset? PasswordResetTokenExpirationDate { get; set; } /// /// Number of times sign in failed. /// int FailedPasswordAttempts { get; set; } /// /// Whether the user is locked out. /// bool IsLockedOut { get; set; } /// /// When the user lock out is over. /// DateTimeOffset? LockoutEndDate { get; set; } /// /// Whether 2-factor authentication is enabled or not /// bool TwoFactorEnabled { get; set; } /// /// The two-factor authenticator key /// string TwoFactorAuthenticatorKey { get; set; } /// /// The list of two factor authentication recovery codes /// List TwoFactorRecoveryCodes { get; set; } } }