V14 Bugfix, fixed some of the document controllers (#15449)

* Updated naming to route correctly

* Added a check for null

* Added another status code for the PublicAccess

* Added a check for null

* Updated naming to match route

* Added attempt pattern

* added a ProblemDetailsBuilder for the EntryNotFound

---------

Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
This commit is contained in:
Andreas Zerbst
2024-01-29 12:58:03 +01:00
committed by GitHub
parent aea9b79513
commit bb46d23730
7 changed files with 24 additions and 7 deletions

View File

@@ -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()),

View File

@@ -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<PublicAccessOperationStatus> attempt = await _publicAccessService.DeleteAsync(id);
return Ok();
return attempt.Success ? Ok() : PublicAccessOperationStatusResult(attempt.Result);
}
}

View File

@@ -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<IActionResult> DomainsAsync(Guid id)
[ProducesResponseType(typeof(DomainsResponseModel), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
public async Task<IActionResult> Domains(Guid id)
{
IDomain[] assignedDomains = (await _domainService.GetAssignedDomainsAsync(id, true))
.OrderBy(d => d.SortOrder)

View File

@@ -55,8 +55,13 @@ public class GetPublicAccessDocumentController : DocumentControllerBase
return PublicAccessOperationStatusResult(accessAttempt.Status);
}
if (accessAttempt.Result is null)
{
return Ok();
}
Attempt<PublicAccessResponseModel?, PublicAccessOperationStatus> responseModelAttempt =
_publicAccessPresentationFactory.CreatePublicAccessResponseModel(accessAttempt.Result!);
_publicAccessPresentationFactory.CreatePublicAccessResponseModel(accessAttempt.Result);
if (responseModelAttempt.Success is false)
{

View File

@@ -26,7 +26,7 @@ public class UpdateDomainsController : DocumentControllerBase
[MapToApiVersion("1.0")]
[HttpPut("{id:guid}/domains")]
public async Task<IActionResult> UpdateDomainsAsync(Guid id, UpdateDomainsRequestModel updateModel)
public async Task<IActionResult> Update(Guid id, UpdateDomainsRequestModel updateModel)
{
DomainsUpdateModel domainsUpdateModel = _umbracoMapper.Map<DomainsUpdateModel>(updateModel)!;

View File

@@ -9,4 +9,5 @@ public enum PublicAccessOperationStatus
NoAllowedEntities,
AmbiguousRule,
CancelledByNotification,
EntryNotFound,
}

View File

@@ -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();