Files
Umbraco-CMS/src/Umbraco.Cms.Api.Management/Controllers/PartialView/PartialViewControllerBase.cs
Elitsa Marinovska 036876f349 V14: Add authorization policies to new Backoffice API controllers - p1 (#14551)
* AuditLog policies

* DataType policies

* Dictionary policies

* Document controllers policies

* DocumentBlueprint controllers policies

* DocumentType controllers policies

* HealthCheck controllers policies

* Language controllers policies

* LogViewer controllers policies

* Media controllers policies

* MediaType controllers policies

* Member controllers policies

* MemberGroup controllers policies

* MemberType controllers policies

* ModelsBuilder controllers policies

* Package controllers policies

* PartialView controllers policies

* Profiling controllers policies

* PropertyType controllers policies

* RedirectUrlManagement controllers policies

* Relation controllers policies

* RelationType controllers policies

* Script controllers policies

* Stylesheet controllers policies

* Telemetry controllers policies

* Template controllers policies

* TrackedReference controllers policies

* Upgrade controllers policies

* User controllers policies

* UserGroup controllers policies

* Other controllers cleanup

* Moved CreatePolicies to its own Extensions class

* Added TreeAccessScripts and TreeAccessStylesheets policies

* Remove comments

* Forgotten "New" prefix

* Duplicate Auth Policy

* Removed comment since we are using reference tokens and this is no longer a problem

* Fix AdminUserEditsRequireAdmin auth policy to use a constant

* Revert change

* Revery UpgradeControllerBase attribute

* Removed AdminUserEditsRequireAdmin policy as it will be implemented later on

* Adding RequireAdminAccess policy for Upgrade controller

* Wrong claim type
2023-07-19 08:02:51 +02:00

49 lines
2.3 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Common.Builders;
using Umbraco.Cms.Api.Management.Routing;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Services.OperationStatus;
using Umbraco.Cms.Web.Common.Authorization;
namespace Umbraco.Cms.Api.Management.Controllers.PartialView;
[ApiController]
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.PartialView}")]
[ApiExplorerSettings(GroupName = "Partial View")]
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessPartialViews)]
public class PartialViewControllerBase : ManagementApiControllerBase
{
protected IActionResult PartialViewOperationStatusResult(PartialViewOperationStatus status) =>
status switch
{
PartialViewOperationStatus.Success => Ok(),
PartialViewOperationStatus.AlreadyExists => BadRequest(new ProblemDetailsBuilder()
.WithTitle("Partial view already exists")
.WithDetail("A partial view with the same path already exists")
.Build()),
PartialViewOperationStatus.InvalidFileExtension => BadRequest(new ProblemDetailsBuilder()
.WithTitle("Invalid file extension")
.WithDetail("The file extension is not valid for a partial view.")
.Build()),
PartialViewOperationStatus.ParentNotFound => NotFound(new ProblemDetailsBuilder()
.WithTitle("Parent not found")
.WithDetail("The parent folder was not found.")
.Build()),
PartialViewOperationStatus.PathTooLong => BadRequest(new ProblemDetailsBuilder()
.WithTitle("Path too long")
.WithDetail("The file path is too long.")
.Build()),
PartialViewOperationStatus.InvalidName => BadRequest(new ProblemDetailsBuilder()
.WithTitle("Invalid name")
.WithDetail("The partial view name is invalid.")
.Build()),
PartialViewOperationStatus.NotFound => NotFound(new ProblemDetailsBuilder()
.WithTitle("Partial view not found")
.WithDetail("The partial view was not found.")
.Build()),
_ => StatusCode(StatusCodes.Status500InternalServerError, "Unknown partial view operation status")
};
}