namespace FutureMailAPI.Models { public class OAuthClient { public int Id { get; set; } public string ClientId { get; set; } = string.Empty; public string ClientSecret { get; set; } = string.Empty; public string Name { get; set; } = string.Empty; public string RedirectUris { get; set; } = string.Empty; // JSON array public string Scopes { get; set; } = string.Empty; // JSON array public bool IsActive { get; set; } = true; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; } public class OAuthAuthorizationCode { public int Id { get; set; } public string Code { get; set; } = string.Empty; public int ClientId { get; set; } public int UserId { get; set; } public string RedirectUri { get; set; } = string.Empty; public string Scopes { get; set; } = string.Empty; public bool IsUsed { get; set; } = false; public DateTime ExpiresAt { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // Navigation properties public virtual OAuthClient Client { get; set; } = null!; public virtual User User { get; set; } = null!; } public class OAuthRefreshToken { public int Id { get; set; } public string Token { get; set; } = string.Empty; public int ClientId { get; set; } public int UserId { get; set; } public bool IsUsed { get; set; } = false; public DateTime ExpiresAt { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // Navigation properties public virtual OAuthClient Client { get; set; } = null!; public virtual User User { get; set; } = null!; } public class OAuthAccessToken { public int Id { get; set; } public string Token { get; set; } = string.Empty; public int ClientId { get; set; } public int UserId { get; set; } public string Scopes { get; set; } = string.Empty; public bool IsRevoked { get; set; } = false; public DateTime ExpiresAt { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // Navigation properties public virtual OAuthClient Client { get; set; } = null!; public virtual User User { get; set; } = null!; } }