namespace Avalonia_Services.Services.AuthService
{
///
/// API 登录请求。
///
/// 账号(邮箱或用户名)。
/// 密码。
/// 请求的角色列表。
public sealed record ApiLoginRequest(string? Account, string? Password, string[]? Roles = null);
///
/// API Refresh Token 请求。
///
/// 刷新令牌。
public sealed record ApiRefreshTokenRequest(string? RefreshToken);
///
/// API 登出请求。
///
/// 要撤销的刷新令牌。
public sealed record ApiLogoutRequest(string? RefreshToken);
///
/// 认证 Token 响应,包含 Access Token 和 Refresh Token 及其过期时间。
///
/// 访问令牌。
/// 刷新令牌。
/// 访问令牌过期时间。
/// 刷新令牌过期时间。
/// 用户角色列表。
public sealed record AuthTokenResponse(
string AccessToken,
string RefreshToken,
DateTime AccessTokenExpiresAt,
DateTime RefreshTokenExpiresAt,
string[] Roles);
///
/// PC 端授权码登录请求。
///
/// 第三方授权码。
public sealed record PcAuthorizeRequest(string? AuthorizationCode);
///
/// PC 端 Token 刷新请求。
///
/// 当前 Token。
public sealed record PcRefreshRequest(string? Token);
///
/// PC 端登出请求。
///
/// 要清除的 Token。
public sealed record PcLogoutRequest(string? Token);
///
/// PC 端 Token 响应。
///
/// 访问令牌。
/// 过期时间。
/// 用户角色列表。
public sealed record PcTokenResponse(string Token, DateTime ExpiresAt, string[] Roles);
///
/// 第三方授权检查结果。
///
public enum ThirdPartyAuthCheckResult
{
/// 授权有效。
Valid,
/// 授权已丢失。
AuthorizationLost,
/// 暂时性失败。
TemporaryFailure,
}
///
/// 第三方授权客户端接口,用于验证和刷新第三方授权。
///
public interface IPcThirdPartyAuthorizationClient
{
///
/// 验证第三方授权码是否有效。
///
/// 第三方授权码。
/// 取消令牌。
/// 授权检查结果。
Task ValidateAuthorizationCodeAsync(string authorizationCode, CancellationToken cancellationToken = default);
///
/// 刷新第三方授权。
///
/// 授权引用标识。
/// 取消令牌。
/// 授权检查结果。
Task RefreshAuthorizationAsync(string authorizationReference, CancellationToken cancellationToken = default);
}
}