[FA-55] Finished aside from deactivation/integration events
This commit is contained in:
@@ -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()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user