using Hutopy.Application.Common.Interfaces; using Hutopy.Web.Features.Users.Handlers.Models; namespace Hutopy.Web.Features.Users.Handlers; [PublicAPI] public class GetCurrentUserQueryHandler( IIdentityService identityService ) : EndpointWithoutRequest { public override void Configure() { Get("/api/users/profile"); Options(o => o.WithTags("Users")); } public override async Task HandleAsync( CancellationToken cancellationToken) { var userModel = await identityService.GetCurrentUserAsync(); if (userModel is null) { await SendNotFoundAsync(cancellationToken); return; } var roles = await identityService.GetCurrentUserRolesAsync(); await SendOkAsync( new UserDto { Id = userModel.Id, Alias = userModel.Alias, PortraitUrl = userModel.PortraitUrl, Firstname = userModel.Firstname, Lastname = userModel.Lastname, Username = userModel.Username, PhoneNumber = userModel.PhoneNumber, Email = userModel.Email, BirthDate = userModel.BirthDate, Address = userModel.Address, UserRoles = roles, }, cancellationToken); } }