From 4bb209b20630659ae3347bcb7b93da1b0f091966 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sun, 17 Aug 2025 17:54:34 -0400 Subject: [PATCH] Implement missing RestAuthorityInvoker method --- .../Core/RestAuthorityInvoker{TAuthority}.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Tgstation.Server.Host/Authority/Core/RestAuthorityInvoker{TAuthority}.cs b/src/Tgstation.Server.Host/Authority/Core/RestAuthorityInvoker{TAuthority}.cs index 4abe922cee..7821a4b736 100644 --- a/src/Tgstation.Server.Host/Authority/Core/RestAuthorityInvoker{TAuthority}.cs +++ b/src/Tgstation.Server.Host/Authority/Core/RestAuthorityInvoker{TAuthority}.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Net; using System.Threading.Tasks; @@ -152,8 +153,23 @@ namespace Tgstation.Server.Host.Authority.Core ApiController controller, Func>> authorityInvoker) { - await Task.Yield(); - throw new NotImplementedException(); + ArgumentNullException.ThrowIfNull(controller); + ArgumentNullException.ThrowIfNull(authorityInvoker); + + var requirementsGate = authorityInvoker(Authority); + var projectable = await ExecuteIfRequirementsSatisfied(requirementsGate); + if (projectable == null) + return controller.Forbid(); + + var transformer = new TTransformer(); + var authorityResponse = await projectable.Resolve( + queryable => queryable + .Select(transformer.ProjectedExpression)); + var erroredResult = CreateErroredActionResult(controller, authorityResponse); + if (erroredResult != null) + return erroredResult; + + return CreateSuccessfulActionResult(controller, result => result, authorityResponse!); } } }