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 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 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 }; } }