tgstation-server 6.19.0
The /tg/station 13 server suite
Loading...
Searching...
No Matches
UserGroupController.cs
Go to the documentation of this file.
1using System;
2using System.Linq;
3using System.Threading;
4using System.Threading.Tasks;
5
6using Microsoft.AspNetCore.Authorization;
7using Microsoft.AspNetCore.Mvc;
8using Microsoft.Extensions.Logging;
9
20
22{
26 [Route(Routes.UserGroup)]
27 [Authorize]
29 {
34
44 IDatabaseContext databaseContext,
45 IAuthenticationContext authenticationContext,
46 IApiHeadersProvider apiHeaders,
49 : base(
50 databaseContext,
51 authenticationContext,
52 apiHeaders,
53 logger,
54 true)
55 {
57 }
58
64 static Models.PermissionSet? TransformApiPermissionSet(Api.Models.PermissionSet? permissionSet)
65 => permissionSet != null
67 {
68 InstanceManagerRights = permissionSet?.InstanceManagerRights,
69 AdministrationRights = permissionSet?.AdministrationRights,
70 }
71 : null;
72
80 [HttpPut]
83 {
84 ArgumentNullException.ThrowIfNull(model);
85
86 if (model.Name == null)
87 return BadRequest(new ErrorMessageResponse(ErrorCode.ModelValidationFailure));
88
89 return await userGroupAuthority.InvokeTransformable<UserGroup, UserGroupResponse>(
90 this,
91 authority => authority.Create(
92 model.Name,
93 TransformApiPermissionSet(model.PermissionSet),
95 }
96
105 [HttpPost]
108 {
109 ArgumentNullException.ThrowIfNull(model);
110
111 return userGroupAuthority.InvokeTransformable<UserGroup, UserGroupResponse>(
112 this,
113 authority => authority.Update(
114 model.Require(x => x.Id),
115 model.Name,
116 TransformApiPermissionSet(model.PermissionSet),
118 }
119
128 [HttpGet("{id}")]
131 public ValueTask<IActionResult> GetId(long id, CancellationToken cancellationToken)
132 => userGroupAuthority.InvokeTransformable<UserGroup, UserGroupResponse>(this, authority => authority.GetId(id, true, cancellationToken));
133
146 async () =>
147 {
149 .InvokeQueryable(authority => authority.Queryable(true));
150 if (queryable == null)
151 return null;
152
153 return new PaginatableResult<UserGroup>(queryable.OrderBy(x => x.Id));
154 },
155 null,
156 page,
157 pageSize,
159
169 [HttpDelete("{id}")]
173 public ValueTask<IActionResult> Delete(long id, CancellationToken cancellationToken)
174#pragma warning disable API1001 // The response type is RIGHT THERE ^^^
175 => userGroupAuthority.Invoke(this, authority => authority.DeleteEmpty(id, cancellationToken));
176#pragma warning restore API1001
177 }
178}
Represents an error message returned by the server.
Routes to a server actions.
Definition Routes.cs:9
const string UserGroup
The user group controller.
Definition Routes.cs:43
const string List
The postfix for list operations.
Definition Routes.cs:113
Base Controller for API functions.
ApiController for managing UserGroupResponses.
static Models.? PermissionSet TransformApiPermissionSet(Api.Models.PermissionSet? permissionSet)
Transform a Api.Models.PermissionSet into a PermissionSet.
ValueTask< IActionResult > Delete(long id, CancellationToken cancellationToken)
Delete a UserGroup.
async ValueTask< IActionResult > Create([FromBody] UserGroupCreateRequest model, CancellationToken cancellationToken)
Create a new UserGroup.
ValueTask< IActionResult > GetId(long id, CancellationToken cancellationToken)
Gets a specific UserGroup.
readonly IRestAuthorityInvoker< IUserGroupAuthority > userGroupAuthority
The IUserGroupAuthority for the UserGroupController.
ValueTask< IActionResult > Update([FromBody] UserGroupUpdateRequest model, CancellationToken cancellationToken)
Update a UserGroup.
ValueTask< IActionResult > List([FromQuery] int? page, [FromQuery] int? pageSize, CancellationToken cancellationToken)
Lists all UserGroups.
UserGroupController(IDatabaseContext databaseContext, IAuthenticationContext authenticationContext, IApiHeadersProvider apiHeaders, ILogger< UserGroupController > logger, IRestAuthorityInvoker< IUserGroupAuthority > userGroupAuthority)
Initializes a new instance of the UserGroupController class.
Represents a group of Users.
Definition UserGroup.cs:16
Invokes TAuthority methods and generates IActionResult responses.
ValueTask< IActionResult > Invoke(ApiController controller, Func< TAuthority, RequirementsGated< AuthorityResponse > > authorityInvoker)
Invoke a TAuthority method with no success result.
For creating and accessing authentication contexts.
ErrorCode
Types of Response.ErrorMessageResponses that the API may return.
Definition ErrorCode.cs:12
@ Api
The ApiHeaders.ApiVersionHeader header is missing or invalid.