using FictionArchive.Service.Shared.Constants; using FictionArchive.Service.UserService.Models.DTOs; using FictionArchive.Service.UserService.Services; using HotChocolate.Authorization; namespace FictionArchive.Service.UserService.GraphQL; public class Mutation { [Authorize(Roles = [AuthorizationConstants.Roles.Admin])] public async Task RegisterUser(string username, string email, string oAuthProviderId, string? inviterOAuthProviderId, UserManagementService userManagementService) { var user = await userManagementService.RegisterUser(username, email, oAuthProviderId, inviterOAuthProviderId); return new UserDto { Id = user.Id, CreatedTime = user.CreatedTime, LastUpdatedTime = user.LastUpdatedTime, Username = user.Username, Email = user.Email, Disabled = user.Disabled, Inviter = user.Inviter != null ? new UserDto { Id = user.Inviter.Id, CreatedTime = user.Inviter.CreatedTime, LastUpdatedTime = user.Inviter.LastUpdatedTime, Username = user.Inviter.Username, Email = user.Inviter.Email, Disabled = user.Inviter.Disabled, Inviter = null // Limit recursion to one level } : null }; } }