47 lines
933 B
C#
47 lines
933 B
C#
namespace FiscalOS.Core.Identity;
|
|
|
|
public sealed class RefreshToken : Entity
|
|
{
|
|
public string Token { get; init; } = string.Empty;
|
|
public DateTimeOffset ExpiresAt { get; init; }
|
|
public Guid UserId { get; init; }
|
|
public User? User { get; init; }
|
|
public bool Revoked { get; set; }
|
|
|
|
private RefreshToken()
|
|
{
|
|
}
|
|
|
|
public static RefreshToken From(Guid userId, string token, DateTimeOffset expiresAt)
|
|
{
|
|
return new()
|
|
{
|
|
UserId = userId,
|
|
Token = token,
|
|
ExpiresAt = expiresAt,
|
|
};
|
|
}
|
|
|
|
public static RefreshToken From(User user, string token, DateTimeOffset expiresAt)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(user, nameof(user));
|
|
|
|
return new()
|
|
{
|
|
User = user,
|
|
UserId = user.Id,
|
|
Token = token,
|
|
ExpiresAt = expiresAt,
|
|
};
|
|
}
|
|
|
|
public void Revoke()
|
|
{
|
|
Revoked = true;
|
|
}
|
|
|
|
public bool IsExpired(DateTimeOffset now)
|
|
{
|
|
return now >= ExpiresAt;
|
|
}
|
|
} |