using Avalonia_Services.Core; using Avalonia_Services.Services.AuthService; namespace Avalonia_Services.Endpoints { /// /// 认证端点统一入口。端点定义在这里,宿主项目只提供对应实现。 /// public static class AuthEndpoints { /// /// 配置 API 端鉴权端点(登录、刷新、登出)。 /// /// 端点构建器。 public static void ConfigureApi(ServiceEndpointBuilder builder) { builder.ConfigureEndpoints(endpoints => { endpoints.MapPost( "api/auth/login", (service, request, ctx) => service.LoginAsync(request, ctx)) .WithName("ApiLogin") .WithOpenApi("Auth", "API 登录,返回 access token 和 refresh token。", "", typeof(ApiLoginRequest), typeof(AuthTokenResponse)) .ApiOnly(); endpoints.MapPost( "api/auth/refresh", (service, request, ctx) => service.RefreshAsync(request, ctx)) .WithName("ApiRefresh") .WithOpenApi("Auth", "API refresh token 轮换。", "", typeof(ApiRefreshTokenRequest), typeof(AuthTokenResponse)) .ApiOnly(); endpoints.MapPost( "api/auth/logout", (service, request, ctx) => service.LogoutAsync(request, ctx)) .WithName("ApiLogout") .WithOpenApi("Auth", "API 退出登录并吊销 refresh token。", "", typeof(ApiLogoutRequest)) .ApiOnly(); }); } /// /// 配置 PC 端鉴权端点(授权码登录、刷新、登出)。 /// /// 端点构建器。 public static void ConfigurePc(ServiceEndpointBuilder builder) { builder.ConfigureEndpoints(endpoints => { endpoints.MapPost( "api/pc/auth/authorize", (service, request, ctx) => service.AuthorizeAsync(request, ctx)) .WithName("PcAuthorize") .WithOpenApi("Auth", "PC 授权码登录,生成本地全局 token。", "", typeof(PcAuthorizeRequest), typeof(PcTokenResponse)) .PcOnly(); endpoints.MapPost( "api/pc/auth/refresh", (service, request, ctx) => service.RefreshAsync(request, ctx)) .WithName("PcRefresh") .WithOpenApi("Auth", "PC 全局 token 刷新。", "", typeof(PcRefreshRequest), typeof(PcTokenResponse)) .PcOnly(); endpoints.MapPost( "api/pc/auth/logout", (service, request, ctx) => service.LogoutAsync(request, ctx)) .WithName("PcLogout") .WithOpenApi("Auth", "PC 退出登录。", "", typeof(PcLogoutRequest)) .PcOnly(); }); } } }