tgstation-server 6.16.0
The /tg/station 13 server suite
Loading...
Searching...
No Matches
Users.cs
Go to the documentation of this file.
1using System;
2using System.Linq;
3using System.Threading;
4using System.Threading.Tasks;
5
6using HotChocolate;
7using HotChocolate.Data;
8using HotChocolate.Types;
9using HotChocolate.Types.Relay;
10
11using Microsoft.Extensions.Options;
12
17
18#pragma warning disable CA1724 // conflict with GitLabApiClient.Models.Users. They can fuck off
19
21{
25 public sealed class Users
26 {
31 public UserGroups Groups() => new();
32
38 public bool OidcStrictMode(
39 [Service] IOptions<SecurityConfiguration> securityConfigurationOptions)
40 {
41 ArgumentNullException.ThrowIfNull(securityConfigurationOptions);
42 return securityConfigurationOptions.Value.OidcStrictMode;
43 }
44
51 [TgsGraphQLAuthorize<IUserAuthority>(nameof(IUserAuthority.Read))]
52 public ValueTask<User> Current(
53 [Service] IGraphQLAuthorityInvoker<IUserAuthority> userAuthority,
54 CancellationToken cancellationToken)
55 {
56 ArgumentNullException.ThrowIfNull(userAuthority);
57 return userAuthority.InvokeTransformable<Models.User, User, UserGraphQLTransformer>(authority => authority.Read(cancellationToken));
58 }
59
67 [Error(typeof(ErrorMessageException))]
68 [TgsGraphQLAuthorize<IUserAuthority>(nameof(IUserAuthority.GetId))]
69 public ValueTask<User?> ById(
70 [ID(nameof(User))] long id,
71 [Service] IGraphQLAuthorityInvoker<IUserAuthority> userAuthority,
72 CancellationToken cancellationToken)
73 => User.GetUser(id, userAuthority, cancellationToken);
74
80 [UsePaging]
81 [UseFiltering]
82 [UseSorting]
83 [TgsGraphQLAuthorize<IUserAuthority>(nameof(IUserAuthority.Queryable))]
85 [Service] IGraphQLAuthorityInvoker<IUserAuthority> userAuthority)
86 {
87 ArgumentNullException.ThrowIfNull(userAuthority);
88 var dtoQueryable = userAuthority.InvokeTransformableQueryable<Models.User, User, UserGraphQLTransformer>(authority => authority.Queryable(false));
89 return dtoQueryable;
90 }
91 }
92}
Exception representing ErrorMessageResponses.
Wrapper for accessing UserGroups.
Definition UserGroups.cs:21
A user registered in the server.
Definition User.cs:21
static ValueTask< User?> GetUser(long id, [Service] IGraphQLAuthorityInvoker< IUserAuthority > userAuthority, CancellationToken cancellationToken)
Node resolver for Users.
Definition User.cs:62
Wrapper for accessing Users.
Definition Users.cs:26
UserGroups Groups()
Gets the swarm's UserGroups.
bool OidcStrictMode([Service] IOptions< SecurityConfiguration > securityConfigurationOptions)
If only OIDC logins and registration is allowed.
Definition Users.cs:38
IQueryable< User > QueryableUsers([Service] IGraphQLAuthorityInvoker< IUserAuthority > userAuthority)
Queries all registered Users.
Definition Users.cs:84
ValueTask< User > Current([Service] IGraphQLAuthorityInvoker< IUserAuthority > userAuthority, CancellationToken cancellationToken)
Gets the current User.
Definition Users.cs:52
ValueTask< User?> ById([ID(nameof(User))] long id, [Service] IGraphQLAuthorityInvoker< IUserAuthority > userAuthority, CancellationToken cancellationToken)
Gets a User by Entity.Id.
ITransformer<TInput, TOutput> for GraphQL.Types.Users.
IQueryable< User > Queryable(bool includeJoins)
Gets all registered Users.
ValueTask< AuthorityResponse< User > > GetId(long id, bool includeJoins, bool allowSystemUser, CancellationToken cancellationToken)
Gets the User with a given id .
ValueTask< AuthorityResponse< User > > Read(CancellationToken cancellationToken)
Gets the currently authenticated user.