From ecf95607e821c9934b0f832cbe0609c0babc5c46 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Wed, 20 Dec 2023 14:15:45 -0500 Subject: [PATCH] Nullify `DreamMakerController` --- .../Controllers/ApiController.cs | 4 +- .../Controllers/DreamMakerController.cs | 37 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/Tgstation.Server.Host/Controllers/ApiController.cs b/src/Tgstation.Server.Host/Controllers/ApiController.cs index ea8c4c3209..bad2e6c10f 100644 --- a/src/Tgstation.Server.Host/Controllers/ApiController.cs +++ b/src/Tgstation.Server.Host/Controllers/ApiController.cs @@ -267,7 +267,7 @@ namespace Tgstation.Server.Host.Controllers /// /// The of model being generated and returned. /// A resulting in a resulting in the generated . - /// A to transform the s after being queried. + /// Optional to transform the s after being queried. /// The requested page from the query. /// The requested page size from the query. /// The for the operation. @@ -297,7 +297,7 @@ namespace Tgstation.Server.Host.Controllers /// A resulting in the for the operation. protected ValueTask Paginated( Func>> queryGenerator, - Func resultTransformer, + Func? resultTransformer, int? pageQuery, int? pageSizeQuery, CancellationToken cancellationToken) diff --git a/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs b/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs index 9401f646d9..d1ef45fe48 100644 --- a/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs +++ b/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs @@ -21,8 +21,6 @@ using Tgstation.Server.Host.Models; using Tgstation.Server.Host.Security; using Tgstation.Server.Host.Utils; -#nullable disable - namespace Tgstation.Server.Host.Controllers { /// @@ -87,6 +85,10 @@ namespace Tgstation.Server.Host.Controllers .AsQueryable() .Where(x => x.InstanceId == Instance.Id) .FirstOrDefaultAsync(cancellationToken); + + if (dreamMakerSettings == null) + return this.Gone(); + return Json(dreamMakerSettings.ToApi()); } @@ -189,9 +191,10 @@ namespace Tgstation.Server.Host.Controllers if (hostModel == null) return this.Gone(); + var dreamMakerRights = InstancePermissionSet.DreamMakerRights!.Value; if (model.ProjectName != null) { - if (!AuthenticationContext.InstancePermissionSet.DreamMakerRights.Value.HasFlag(DreamMakerRights.SetDme)) + if (!dreamMakerRights.HasFlag(DreamMakerRights.SetDme)) return Forbid(); if (model.ProjectName.Length == 0) hostModel.ProjectName = null; @@ -201,10 +204,10 @@ namespace Tgstation.Server.Host.Controllers if (model.ApiValidationPort.HasValue) { - if (!AuthenticationContext.InstancePermissionSet.DreamMakerRights.Value.HasFlag(DreamMakerRights.SetApiValidationPort)) + if (!dreamMakerRights.HasFlag(DreamMakerRights.SetApiValidationPort)) return Forbid(); - if (model.ApiValidationPort.Value != hostModel.ApiValidationPort.Value) + if (model.ApiValidationPort.Value != hostModel.ApiValidationPort!.Value) { var verifiedPort = await portAllocator .GetAvailablePort( @@ -220,28 +223,28 @@ namespace Tgstation.Server.Host.Controllers if (model.ApiValidationSecurityLevel.HasValue) { - if (!AuthenticationContext.InstancePermissionSet.DreamMakerRights.Value.HasFlag(DreamMakerRights.SetSecurityLevel)) + if (!dreamMakerRights.HasFlag(DreamMakerRights.SetSecurityLevel)) return Forbid(); hostModel.ApiValidationSecurityLevel = model.ApiValidationSecurityLevel; } if (model.RequireDMApiValidation.HasValue) { - if (!AuthenticationContext.InstancePermissionSet.DreamMakerRights.Value.HasFlag(DreamMakerRights.SetApiValidationRequirement)) + if (!dreamMakerRights.HasFlag(DreamMakerRights.SetApiValidationRequirement)) return Forbid(); hostModel.RequireDMApiValidation = model.RequireDMApiValidation; } if (model.Timeout.HasValue) { - if (!AuthenticationContext.InstancePermissionSet.DreamMakerRights.Value.HasFlag(DreamMakerRights.SetTimeout)) + if (!dreamMakerRights.HasFlag(DreamMakerRights.SetTimeout)) return Forbid(); hostModel.Timeout = model.Timeout; } await DatabaseContext.Save(cancellationToken); - if ((AuthenticationContext.GetRight(RightsType.DreamMaker) & (ulong)DreamMakerRights.Read) == 0) + if (!dreamMakerRights.HasFlag(DreamMakerRights.Read)) return NoContent(); return await Read(cancellationToken); @@ -254,17 +257,17 @@ namespace Tgstation.Server.Host.Controllers IQueryable BaseCompileJobsQuery() => DatabaseContext .CompileJobs .AsQueryable() - .Include(x => x.Job) + .Include(x => x.Job!) .ThenInclude(x => x.StartedBy) - .Include(x => x.Job) + .Include(x => x.Job!) .ThenInclude(x => x.Instance) - .Include(x => x.RevisionInformation) - .ThenInclude(x => x.PrimaryTestMerge) + .Include(x => x.RevisionInformation!) + .ThenInclude(x => x.PrimaryTestMerge!) .ThenInclude(x => x.MergedBy) .Include(x => x.RevisionInformation) - .ThenInclude(x => x.ActiveTestMerges) - .ThenInclude(x => x.TestMerge) - .ThenInclude(x => x.MergedBy) - .Where(x => x.Job.Instance.Id == Instance.Id); + .ThenInclude(x => x.ActiveTestMerges!) + .ThenInclude(x => x!.TestMerge) + .ThenInclude(x => x!.MergedBy) + .Where(x => x.Job.Instance!.Id == Instance.Id); } }