| 123456789101112131415161718192021222324252627282930 |
- using Application.Abstractions.Messaging;
- using Application.Abstractions.Identity;
- using SharedKernel.Results;
- namespace Application.Features.Director.User.GetRoles;
- public sealed class Handler(IIdentityRoleReader roleReader, IIdentityUserReader userReader) : IQueryHandler<Query, Result<Response>>
- {
- public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
- {
- var user = await userReader.GetUserAsync(request.UserID, ct);
- if (user == null)
- {
- return Result.Failure<Response>(Error.NotFound("User.NotFound", "회원 정보를 찾을 수 없습니다."));
- }
- var roles = await roleReader.GetRolesAsync(ct);
- var userRoleSet = new HashSet<string>(user.Roles, StringComparer.OrdinalIgnoreCase);
- return Result.Success(new Response
- {
- User = user,
- Roles = [..roles.Select(role => new Response.Checkbox
- {
- DisplayValue = role.Name,
- IsSelected = role.Name != null && userRoleSet.Contains(role.Name)
- })]
- });
- }
- }
|