23 lines
775 B
C#
23 lines
775 B
C#
|
|
using System.Security.Claims;
|
||
|
|
using PhysOn.Domain.Accounts;
|
||
|
|
|
||
|
|
namespace PhysOn.Application.Abstractions;
|
||
|
|
|
||
|
|
public interface ITokenService
|
||
|
|
{
|
||
|
|
IssuedTokenSet IssueTokens(Account account, Session session, Device device, DateTimeOffset now);
|
||
|
|
IssuedRealtimeTicket IssueRealtimeTicket(Account account, Session session, Device device, DateTimeOffset now);
|
||
|
|
ClaimsPrincipal? TryReadPrincipal(string accessToken);
|
||
|
|
ClaimsPrincipal? TryReadRealtimePrincipal(string accessToken);
|
||
|
|
}
|
||
|
|
|
||
|
|
public sealed record IssuedTokenSet(
|
||
|
|
string AccessToken,
|
||
|
|
DateTimeOffset AccessTokenExpiresAt,
|
||
|
|
string RefreshToken,
|
||
|
|
string RefreshTokenHash,
|
||
|
|
DateTimeOffset RefreshTokenExpiresAt);
|
||
|
|
|
||
|
|
public sealed record IssuedRealtimeTicket(
|
||
|
|
string Token,
|
||
|
|
DateTimeOffset ExpiresAt);
|