using Hutopy.Modules.Identity.Data; using Hutopy.Modules.Identity.Models; namespace Hutopy.Modules.Identity.Handlers; [PublicAPI] public class GetCurrentUserQueryHandler( IdentityService identityService) : EndpointWithoutRequest { public override void Configure() { Get("/api/users/profile"); Options(o => o.WithTags("Memberships")); } public override async Task HandleAsync( CancellationToken cancellationToken) { UserModel? userModel = await identityService.GetCurrentUserAsync(); if (userModel is null) { await SendNotFoundAsync(cancellationToken); return; } IList 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); } }