52 lines
1.6 KiB
C#
52 lines
1.6 KiB
C#
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using TakeoutSaaS.Application.Identity.Abstractions;
|
|
using TakeoutSaaS.Application.Identity.Contracts;
|
|
using TakeoutSaaS.Shared.Abstractions.Constants;
|
|
using TakeoutSaaS.Shared.Abstractions.Results;
|
|
using TakeoutSaaS.Shared.Web.Api;
|
|
using TakeoutSaaS.Shared.Web.Security;
|
|
|
|
namespace TakeoutSaaS.MiniApi.Controllers;
|
|
|
|
/// <summary>
|
|
/// 当前用户信息
|
|
/// </summary>
|
|
[ApiVersion("1.0")]
|
|
[Authorize]
|
|
[Route("api/mini/v{version:apiVersion}/me")]
|
|
public sealed class MeController : BaseApiController
|
|
{
|
|
private readonly IMiniAuthService _authService;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="authService"></param>
|
|
public MeController(IMiniAuthService authService)
|
|
{
|
|
_authService = authService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取用户档案
|
|
/// </summary>
|
|
[HttpGet]
|
|
[ProducesResponseType(typeof(ApiResponse<CurrentUserProfile>), StatusCodes.Status200OK)]
|
|
public async Task<ActionResult<ApiResponse<CurrentUserProfile>>> Get(CancellationToken cancellationToken)
|
|
{
|
|
var userId = User.GetUserId();
|
|
if (userId == Guid.Empty)
|
|
{
|
|
return Unauthorized(ApiResponse<CurrentUserProfile>.Error(ErrorCodes.Unauthorized, "Token 缺少有效的用户标识"));
|
|
}
|
|
|
|
var profile = await _authService.GetProfileAsync(userId, cancellationToken);
|
|
return Ok(ApiResponse<CurrentUserProfile>.Ok(profile));
|
|
}
|
|
}
|