39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
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<UserDto> 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
|
|
};
|
|
}
|
|
}
|