using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using TakeoutSaaS.Application.Identity.Abstractions; using TakeoutSaaS.Application.Identity.Contracts; using TakeoutSaaS.Shared.Abstractions.Results; using TakeoutSaaS.Shared.Web.Api; namespace TakeoutSaaS.MiniApi.Controllers; /// /// 小程序登录认证 /// /// 提供小程序端的微信登录与 Token 刷新能力。 /// 小程序认证服务 [ApiVersion("1.0")] [Authorize] [Route("api/mini/v{version:apiVersion}/auth")] public sealed class AuthController(IMiniAuthService authService) : BaseApiController { /// /// 微信登录 /// /// 微信登录请求。 /// 取消标记。 /// 包含访问令牌与刷新令牌的响应。 [HttpPost("wechat/login")] [AllowAnonymous] [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)] public async Task> LoginWithWeChat([FromBody] WeChatLoginRequest request, CancellationToken cancellationToken) { // 1. 调用认证服务完成微信登录 var response = await authService.LoginWithWeChatAsync(request, cancellationToken); // 2. 返回访问与刷新令牌 return ApiResponse.Ok(response); } /// /// 刷新 Token /// /// 刷新令牌请求。 /// 取消标记。 /// 新的访问令牌与刷新令牌。 [HttpPost("refresh")] [AllowAnonymous] [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)] public async Task> RefreshToken([FromBody] RefreshTokenRequest request, CancellationToken cancellationToken) { // 1. 调用认证服务刷新 Token var response = await authService.RefreshTokenAsync(request, cancellationToken); // 2. 返回新的令牌 return ApiResponse.Ok(response); } }