using Microsoft.AspNetCore.Identity;
namespace zero.Identity;
public abstract class ZeroIdentityUser : ZeroEntity
{
///
/// Optional username (can also be used as login when configured)
///
[PersonalData]
public string Username { get; set; }
///
/// E-Mail address which is also used as the username
///
[PersonalData]
public string Email { get; set; }
///
/// Whether the email address has been confirmed
///
public bool IsEmailConfirmed { get; set; }
///
/// The phone number for the user
///
[PersonalData]
public string PhoneNumber { get; set; }
///
/// Whether the phone number has been confirmed
///
public bool IsPhoneNumberConfirmed { get; set; }
///
/// The password hash
///
public string PasswordHash { get; set; }
///
/// The security stamp
///
public string SecurityStamp { get; set; }
///
/// The user's claims, for use in claims-based authentication.
///
public List Claims { get; set; } = new();
///
/// The roles (aliases) of the user
///
public List RoleIds { get; set; } = new();
///
/// Ability to implement ISupportsSoftDelete
///
public bool IsDeleted { get; set; }
///
/// Number of times sign in failed.
///
public int AccessFailedCount { get; set; }
///
/// Whether the user is locked out.
///
public bool LockoutEnabled { get; set; }
///
/// When the user lock out is over.
///
public DateTimeOffset? LockoutEnd { get; set; }
///
/// Whether 2-factor authentication is enabled or not
///
public bool TwoFactorEnabled { get; set; }
///
/// When the user activated two-factor authentication
///
public DateTimeOffset? TwoFactorEnabledDate { get; set; }
///
/// The two-factor authenticator key
///
public string TwoFactorAuthenticatorKey { get; set; }
///
/// The list of two factor authentication recovery codes
///
public IEnumerable TwoFactorRecoveryCodes { get; set; } = new List();
///
/// Store all external logins (Microsoft, Google, ...)
///
public List ExternalLogins { get; set; } = new();
///
/// Authenticator tokens
///
public List Tokens { get; set; } = new();
}