using FastEndpoints; using Fengling.Backend.Domain.AggregatesModel.AdminAggregate; using Fengling.Backend.Web.Application.Queries.AdminAuth; using System.Security.Claims; namespace Fengling.Backend.Web.Endpoints.AdminAuth; /// /// 获取当前管理员端点 /// [Tags("AdminAuth")] // [HttpGet("/api/admin/auth/me")] public class GetCurrentAdminEndpoint(IMediator mediator) : EndpointWithoutRequest> { public override void Configure() { Get("/api/admin/auth/me"); Tags("AdminAuth"); Description(x => x.WithTags("AdminAuth")); } public override async Task HandleAsync(CancellationToken ct) { // 从 JWT Claims 中提取 AdminId var adminIdClaim = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (string.IsNullOrEmpty(adminIdClaim) || !Guid.TryParse(adminIdClaim, out var adminGuid)) { await Send.UnauthorizedAsync(ct); return; } var adminId = new AdminId(adminGuid); var query = new GetCurrentAdminQuery(adminId); var admin = await mediator.Send(query, ct); await Send.OkAsync(admin.AsResponseData(), ct); } }