16 lines
732 B
C#
16 lines
732 B
C#
using static System.Security.Cryptography.RandomNumberGenerator;
|
|
|
|
namespace Femto.Modules.Auth.Models;
|
|
|
|
public class Session(Guid userId, bool isStrong)
|
|
{
|
|
private static readonly TimeSpan ValidityPeriod = TimeSpan.FromMinutes(15);
|
|
private static readonly TimeSpan RefreshBuffer = TimeSpan.FromMinutes(5);
|
|
public string Id { get; } = Convert.ToBase64String(GetBytes(32));
|
|
public Guid UserId { get; } = userId;
|
|
public DateTimeOffset Expires { get; } = DateTimeOffset.UtcNow + ValidityPeriod;
|
|
|
|
public bool ExpiresSoon => this.Expires < DateTimeOffset.UtcNow + RefreshBuffer;
|
|
public bool IsStronglyAuthenticated { get; } = isStrong;
|
|
public bool IsExpired => this.Expires < DateTimeOffset.UtcNow;
|
|
}
|