PlotDirector/PlotLine/Models/AuthModels.cs
2026-06-06 20:17:16 +01:00

59 lines
1.8 KiB
C#

namespace PlotLine.Models;
public sealed class AppUser
{
public int UserID { get; set; }
public string Email { get; set; } = string.Empty;
public string DisplayName { get; set; } = string.Empty;
public string PasswordHash { get; set; } = string.Empty;
public bool EmailConfirmed { get; set; }
public bool IsLocked { get; set; }
public int FailedLoginAttempts { get; set; }
public DateTime? LockoutEndUtc { get; set; }
public bool TwoFactorEnabled { get; set; }
public DateTime CreatedUtc { get; set; }
public DateTime UpdatedUtc { get; set; }
public DateTime? LastLoginUtc { get; set; }
public Guid SecurityStamp { get; set; }
}
public sealed class UserEmailVerificationToken
{
public int TokenID { get; set; }
public int UserID { get; set; }
public Guid Token { get; set; }
public DateTime ExpiryUtc { get; set; }
public DateTime? UsedUtc { get; set; }
}
public sealed class UserPasswordResetToken
{
public int TokenID { get; set; }
public int UserID { get; set; }
public Guid Token { get; set; }
public DateTime ExpiryUtc { get; set; }
public DateTime? UsedUtc { get; set; }
}
public sealed class UserTwoFactor
{
public int UserID { get; set; }
public string SecretKey { get; set; } = string.Empty;
public string? RecoveryCodes { get; set; }
public DateTime CreatedUtc { get; set; }
public DateTime? ConfirmedUtc { get; set; }
public long? LastUsedTimeStep { get; set; }
}
public sealed class UserLoginAudit
{
public long AuditID { get; set; }
public int? UserID { get; set; }
public string? EmailAttempted { get; set; }
public string? IpAddress { get; set; }
public string? UserAgent { get; set; }
public bool WasSuccessful { get; set; }
public string? Reason { get; set; }
public DateTime CreatedUtc { get; set; }
}