diff --git a/src/Umbraco.Cms.Api.Management/Content/ContentControllerBase.cs b/src/Umbraco.Cms.Api.Management/Content/ContentControllerBase.cs index e2accb7273..2c796f4fb1 100644 --- a/src/Umbraco.Cms.Api.Management/Content/ContentControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Content/ContentControllerBase.cs @@ -162,6 +162,10 @@ public class ContentControllerBase : ManagementApiControllerBase .WithTitle("Ambiguous Rule") .WithDetail("The specified rule is ambiguous, because both member groups and member names were given.") .Build()), + PublicAccessOperationStatus.EntryNotFound => BadRequest(new ProblemDetailsBuilder() + .WithTitle("Entry not found") + .WithDetail("The specified entry was not found.") + .Build()), _ => StatusCode(StatusCodes.Status500InternalServerError, new ProblemDetailsBuilder() .WithTitle("Unknown content operation status.") .Build()), diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/DeletePublicAccessDocumentController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/DeletePublicAccessDocumentController.cs index 9d15979dd1..55de3ed093 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/DeletePublicAccessDocumentController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/DeletePublicAccessDocumentController.cs @@ -3,8 +3,10 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Security.Authorization.Content; +using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Services.OperationStatus; using Umbraco.Cms.Web.Common.Authorization; using Umbraco.Extensions; @@ -38,8 +40,8 @@ public class DeletePublicAccessDocumentController : DocumentControllerBase return Forbidden(); } - await _publicAccessService.DeleteAsync(id); + Attempt attempt = await _publicAccessService.DeleteAsync(id); - return Ok(); + return attempt.Success ? Ok() : PublicAccessOperationStatusResult(attempt.Result); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/DomainsController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/DomainsController.cs index 98e797e784..a5b8c7f4e0 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/DomainsController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/DomainsController.cs @@ -22,9 +22,9 @@ public class DomainsController : DocumentControllerBase [MapToApiVersion("1.0")] [HttpGet("{id:guid}/domains")] - [ProducesResponseType(typeof(DomainsResponseModel), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] - public async Task DomainsAsync(Guid id) + [ProducesResponseType(typeof(DomainsResponseModel), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] + public async Task Domains(Guid id) { IDomain[] assignedDomains = (await _domainService.GetAssignedDomainsAsync(id, true)) .OrderBy(d => d.SortOrder) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/GetPublicAccessDocumentController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/GetPublicAccessDocumentController.cs index 7f5df688ce..c221ef3f01 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/GetPublicAccessDocumentController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/GetPublicAccessDocumentController.cs @@ -55,8 +55,13 @@ public class GetPublicAccessDocumentController : DocumentControllerBase return PublicAccessOperationStatusResult(accessAttempt.Status); } + if (accessAttempt.Result is null) + { + return Ok(); + } + Attempt responseModelAttempt = - _publicAccessPresentationFactory.CreatePublicAccessResponseModel(accessAttempt.Result!); + _publicAccessPresentationFactory.CreatePublicAccessResponseModel(accessAttempt.Result); if (responseModelAttempt.Success is false) { diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateDomainsController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateDomainsController.cs index 32cfb9427e..6e5c53241f 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateDomainsController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateDomainsController.cs @@ -26,7 +26,7 @@ public class UpdateDomainsController : DocumentControllerBase [MapToApiVersion("1.0")] [HttpPut("{id:guid}/domains")] - public async Task UpdateDomainsAsync(Guid id, UpdateDomainsRequestModel updateModel) + public async Task Update(Guid id, UpdateDomainsRequestModel updateModel) { DomainsUpdateModel domainsUpdateModel = _umbracoMapper.Map(updateModel)!; diff --git a/src/Umbraco.Core/Services/OperationStatus/PublicAccessOperationStatus.cs b/src/Umbraco.Core/Services/OperationStatus/PublicAccessOperationStatus.cs index 3ec29d1feb..ed41ee8c70 100644 --- a/src/Umbraco.Core/Services/OperationStatus/PublicAccessOperationStatus.cs +++ b/src/Umbraco.Core/Services/OperationStatus/PublicAccessOperationStatus.cs @@ -9,4 +9,5 @@ public enum PublicAccessOperationStatus NoAllowedEntities, AmbiguousRule, CancelledByNotification, + EntryNotFound, } diff --git a/src/Umbraco.Core/Services/PublicAccessService.cs b/src/Umbraco.Core/Services/PublicAccessService.cs index 06b6a0fa61..52d7e6e6d2 100644 --- a/src/Umbraco.Core/Services/PublicAccessService.cs +++ b/src/Umbraco.Core/Services/PublicAccessService.cs @@ -392,6 +392,11 @@ internal class PublicAccessService : RepositoryService, IPublicAccessService return Attempt.Fail(attempt.Status); } + if (attempt.Result is null) + { + return Attempt.Fail(PublicAccessOperationStatus.EntryNotFound); + } + EventMessages evtMsgs = EventMessagesFactory.Get();