[FA-55] Finished aside from deactivation/integration events

This commit is contained in:
gamer147
2025-12-29 14:09:41 -05:00
parent c0290cc5af
commit 01d3b94050
19 changed files with 377 additions and 75 deletions

View File

@@ -2,53 +2,42 @@ using System.Security.Claims;
using FictionArchive.Service.UserService.Models.DTOs;
using FictionArchive.Service.UserService.Services;
using HotChocolate.Authorization;
using HotChocolate.Data;
namespace FictionArchive.Service.UserService.GraphQL;
public class Query
{
[Authorize]
public async Task<int> GetAvailableInvites(
UserManagementService userManagementService,
[UseProjection]
[UseFirstOrDefault]
public IQueryable<UserDto> GetCurrentUser(
UserServiceDbContext dbContext,
ClaimsPrincipal claimsPrincipal)
{
var oAuthProviderId = claimsPrincipal.FindFirst("sub")?.Value;
var oAuthProviderId = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier)?.Value;
if (string.IsNullOrEmpty(oAuthProviderId))
{
return 0;
return Enumerable.Empty<UserDto>().AsQueryable();
}
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,
LastUpdatedTime = user.LastUpdatedTime,
Username = user.Username,
Email = user.Email,
Disabled = user.Disabled,
AvailableInvites = user.AvailableInvites,
InviterId = user.InviterId
};
return dbContext.Users
.Where(u => u.OAuthProviderId == oAuthProviderId)
.Select(u => new UserDto
{
Id = u.Id,
CreatedTime = u.CreatedTime,
LastUpdatedTime = u.LastUpdatedTime,
Username = u.Username,
Email = u.Email,
Disabled = u.Disabled,
AvailableInvites = u.AvailableInvites,
InviterId = u.InviterId,
InvitedUsers = u.InvitedUsers.Select(iu => new InvitedUserDto
{
Username = iu.Username,
Email = iu.Email
}).ToList()
});
}
}