55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using System.Security.Claims;
|
|
using FictionArchive.Service.UserService.Models.DTOs;
|
|
using FictionArchive.Service.UserService.Services;
|
|
using HotChocolate.Authorization;
|
|
|
|
namespace FictionArchive.Service.UserService.GraphQL;
|
|
|
|
public class Query
|
|
{
|
|
[Authorize]
|
|
public async Task<int> GetAvailableInvites(
|
|
UserManagementService userManagementService,
|
|
ClaimsPrincipal claimsPrincipal)
|
|
{
|
|
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,
|
|
LastUpdatedTime = user.LastUpdatedTime,
|
|
Username = user.Username,
|
|
Email = user.Email,
|
|
Disabled = user.Disabled,
|
|
AvailableInvites = user.AvailableInvites,
|
|
InviterId = user.InviterId
|
|
};
|
|
}
|
|
}
|