[FA-55] User Service backend initial setup
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user