MyBookmark/Modules.User.Domain/Entities/Account/Session.cs
THE_KONDRAT 7b16d72329 ui and login
mongo => postgres
2024-11-03 16:08:39 +03:00

50 lines
1.5 KiB
C#

using Modules.User.Domain.Gateways;
namespace Modules.User.Domain.Entities.Account;
public class Session
{
public Guid Id { get; private set; }
public string RefreshToken { get; private set; } = default!;
public ClientInfo ClientInfo { get; private set; } = default!;
public DateTime ExpiredDate { get; private set; } = default!;
public Guid AccountId { get; private set; }
private Session() { }
public Session(Models.Session model)
{
Id = model.Id;
RefreshToken = model.RefreshToken;
AccountId = model.AccountId;
ClientInfo = new(model.ClientInfo);
ExpiredDate = model.ExpiredDate;
AccountId = model.AccountId;
}
internal static Session Create(Guid accountId, TimeSpan expirationTime, IRefreshTokenGateway gateway, string? userAgent, string? country, string? city)
{
return new()
{
RefreshToken = gateway.GenerateRefreshToken(),
ClientInfo = ClientInfo.Create(userAgent, city, country),
ExpiredDate = DateTime.UtcNow.Add(expirationTime),
AccountId = accountId,
};
}
internal void SetId(Guid id)
{
Id = id;
}
internal string UpdateRefreshToken(IRefreshTokenGateway gateway, string? userAgent, string? country, string? city)
{
RefreshToken = gateway.GenerateRefreshToken();
ClientInfo = ClientInfo.Create(userAgent, country, city);
return RefreshToken;
}
}