[FA-55] User Service backend initial setup

This commit is contained in:
gamer147
2025-12-29 11:20:23 -05:00
parent 1d950b7721
commit c0290cc5af
22 changed files with 843 additions and 120 deletions

View File

@@ -1,3 +1,4 @@
using System.Security.Claims;
using FictionArchive.Service.UserService.Models.DTOs;
using FictionArchive.Service.UserService.Services;
using HotChocolate.Authorization;
@@ -7,9 +8,38 @@ namespace FictionArchive.Service.UserService.GraphQL;
public class Query
{
[Authorize]
public IQueryable<UserDto> GetUsers(UserManagementService userManagementService)
public async Task<int> GetAvailableInvites(
UserManagementService userManagementService,
ClaimsPrincipal claimsPrincipal)
{
return userManagementService.GetUsers().Select(user => new UserDto
var oAuthProviderId = claimsPrincipal.FindFirst("sub")?.Value;
if (string.IsNullOrEmpty(oAuthProviderId))
{
return 0;
}
var user = await userManagementService.GetUserByOAuthProviderIdAsync(oAuthProviderId);
return user?.AvailableInvites ?? 0;
}
[Authorize]
public async Task<UserDto?> GetCurrentUser(
UserManagementService userManagementService,
ClaimsPrincipal claimsPrincipal)
{
var oAuthProviderId = claimsPrincipal.FindFirst("sub")?.Value;
if (string.IsNullOrEmpty(oAuthProviderId))
{
return null;
}
var user = await userManagementService.GetUserByOAuthProviderIdAsync(oAuthProviderId);
if (user == null)
{
return null;
}
return new UserDto
{
Id = user.Id,
CreatedTime = user.CreatedTime,
@@ -17,18 +47,8 @@ public class Query
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
});
AvailableInvites = user.AvailableInvites,
InviterId = user.InviterId
};
}
}