namespace GermanApp.Domain.Entities; /// /// Represents a refresh token for JWT authentication. /// public class RefreshToken { public int Id { get; internal set; } public int UserId { get; internal set; } public string Token { get; internal set; } = string.Empty; public DateTime ExpiresAt { get; internal set; } public bool IsActive { get; internal set; } = true; public DateTime CreatedAt { get; internal set; } public DateTime? RevokedAt { get; internal set; } /// /// Constructor for EF Core deserialization. /// private RefreshToken() { } /// /// Factory method to create a new refresh token. /// public static RefreshToken Create(int userId, string token, int expireDays = 7) { return new RefreshToken { UserId = userId, Token = token, ExpiresAt = DateTime.UtcNow.AddDays(expireDays), CreatedAt = DateTime.UtcNow }; } /// /// Revokes the refresh token. /// public void Revoke() { IsActive = false; RevokedAt = DateTime.UtcNow; } /// /// Checks if the token is expired. /// public bool IsExpired() => DateTime.UtcNow >= ExpiresAt; /// /// Checks if the token is valid (not revoked and not expired). /// public bool IsValid() => IsActive && !IsExpired(); }