Merge branch 'v14/dev' into release/14.0
This commit is contained in:
@@ -12,7 +12,6 @@
|
||||
</ItemGroup>
|
||||
<!-- Microsoft packages -->
|
||||
<ItemGroup>
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
|
||||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.1" />
|
||||
@@ -56,7 +55,6 @@
|
||||
<PackageVersion Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
|
||||
<PackageVersion Include="MiniProfiler.Shared" Version="4.3.8" />
|
||||
<PackageVersion Include="ncrontab" Version="3.3.3" />
|
||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageVersion Include="NPoco" Version="5.7.1" />
|
||||
<PackageVersion Include="NPoco.SqlServer" Version="5.7.1" />
|
||||
<PackageVersion Include="OpenIddict.Abstractions" Version="4.10.1" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Net;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Common.Attributes;
|
||||
using Umbraco.Cms.Api.Common.Filters;
|
||||
using Umbraco.Cms.Api.Delivery.Configuration;
|
||||
@@ -13,7 +13,7 @@ namespace Umbraco.Cms.Api.Delivery.Controllers;
|
||||
[ApiController]
|
||||
[JsonOptionsName(Constants.JsonOptionsNames.DeliveryApi)]
|
||||
[MapToApi(DeliveryApiConfiguration.ApiName)]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.UmbracoFeatureEnabled)]
|
||||
[Authorize(Policy = AuthorizationPolicies.UmbracoFeatureEnabled)]
|
||||
public abstract class DeliveryApiControllerBase : Controller, IUmbracoFeature
|
||||
{
|
||||
protected string DecodePath(string path)
|
||||
|
||||
@@ -15,13 +15,12 @@ using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
using Umbraco.Cms.Web.Common.Security;
|
||||
using Umbraco.Extensions;
|
||||
using SignInResult = Microsoft.AspNetCore.Mvc.SignInResult;
|
||||
using IdentitySignInResult = Microsoft.AspNetCore.Identity.SignInResult;
|
||||
using SignInResult = Microsoft.AspNetCore.Mvc.SignInResult;
|
||||
|
||||
namespace Umbraco.Cms.Api.Delivery.Controllers.Security;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[ApiController]
|
||||
[VersionedDeliveryApiRoute(Common.Security.Paths.MemberApi.EndpointTemplate)]
|
||||
[ApiExplorerSettings(IgnoreApi = true)]
|
||||
public class MemberController : DeliveryApiControllerBase
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.AuditLog;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("audit-log")]
|
||||
[ApiExplorerSettings(GroupName = "Audit Log")]
|
||||
public class AuditLogControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -13,7 +13,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.AuditLog;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessContentOrMedia)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessContentOrMedia)]
|
||||
public class ByKeyAuditLogController : AuditLogControllerBase
|
||||
{
|
||||
private readonly IAuditService _auditService;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Content;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing.Validation;
|
||||
using Umbraco.Cms.Core.Services.OperationStatus;
|
||||
@@ -61,6 +60,14 @@ public class ContentControllerBase : ManagementApiControllerBase
|
||||
.WithTitle("Invalid sorting options")
|
||||
.WithDetail("The supplied sorting operations were invalid. Additional details can be found in the log.")
|
||||
.Build()),
|
||||
ContentEditingOperationStatus.InvalidCulture => BadRequest(problemDetailsBuilder
|
||||
.WithTitle("Invalid culture")
|
||||
.WithDetail("One or more of the supplied culture codes did not match the configured languages.")
|
||||
.Build()),
|
||||
ContentEditingOperationStatus.DuplicateKey => BadRequest(problemDetailsBuilder
|
||||
.WithTitle("Invalid Id")
|
||||
.WithDetail("The supplied id is already in use.")
|
||||
.Build()),
|
||||
ContentEditingOperationStatus.Unknown => StatusCode(
|
||||
StatusCodes.Status500InternalServerError,
|
||||
problemDetailsBuilder
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Culture;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("culture")]
|
||||
[ApiExplorerSettings(GroupName = "Culture")]
|
||||
public abstract class CultureControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.DataType)]
|
||||
[ApiExplorerSettings(GroupName = "Data Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
public abstract class DataTypeControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult DataTypeOperationStatusResult(DataTypeOperationStatus status) =>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType.Filter;
|
||||
|
||||
[ApiExplorerSettings(GroupName = "Data Type")]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Filter}/{Constants.UdiEntityType.DataType}")]
|
||||
// This auth policy might become problematic, as when getting DataTypes on Media types, you don't need access to the document tree.
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
public abstract class DataTypeFilterControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using Asp.Versioning;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.DataType.Item;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Language;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Mapping;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType.Filter;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
public class FilterDataTypeFilterController : DataTypeFilterControllerBase
|
||||
{
|
||||
private readonly IDataTypeService _dataTypeService;
|
||||
private readonly IUmbracoMapper _mapper;
|
||||
|
||||
public FilterDataTypeFilterController(IDataTypeService dataTypeService, IUmbracoMapper mapper)
|
||||
{
|
||||
_dataTypeService = dataTypeService;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[MapToApiVersion("1.0")]
|
||||
[ProducesResponseType(typeof(PagedViewModel<DataTypeItemResponseModel>), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> Filter(
|
||||
int skip = 0,
|
||||
int take = 100,
|
||||
string name = "",
|
||||
string? editorUiAlias = null,
|
||||
string? editorAlias = null)
|
||||
{
|
||||
PagedModel<IDataType> dataTypes = await _dataTypeService.FilterAsync(name, editorUiAlias, editorAlias, skip, take);
|
||||
List<DataTypeItemResponseModel> responseModels = _mapper.MapEnumerable<IDataType, DataTypeItemResponseModel>(dataTypes.Items);
|
||||
var viewModel = new PagedViewModel<DataTypeItemResponseModel>
|
||||
{
|
||||
Total = dataTypes.Total,
|
||||
Items = responseModels,
|
||||
};
|
||||
return Ok(viewModel);
|
||||
}
|
||||
}
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType.Folder;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.DataType}/folder")]
|
||||
[ApiExplorerSettings(GroupName = "Data Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
public abstract class DataTypeFolderControllerBase : FolderManagementControllerBase<IDataType>
|
||||
{
|
||||
protected DataTypeFolderControllerBase(
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
using Asp.Versioning;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.DataType.Item;
|
||||
using Umbraco.Cms.Core.Mapping;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType.Item;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
public class ByEditorUiAliasController : DatatypeItemControllerBase
|
||||
{
|
||||
private readonly IDataTypeService _dataTypeService;
|
||||
private readonly IUmbracoMapper _mapper;
|
||||
|
||||
public ByEditorUiAliasController(
|
||||
IDataTypeService dataTypeService,
|
||||
IUmbracoMapper mapper)
|
||||
{
|
||||
_dataTypeService = dataTypeService;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
[HttpGet("{*alias}")]
|
||||
[MapToApiVersion("1.0")]
|
||||
[ProducesResponseType(typeof(DataTypeItemResponseModel), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> ByEditorUiAlias(string alias)
|
||||
{
|
||||
IEnumerable<IDataType> dataTypes = await _dataTypeService.GetByEditorUiAlias(alias);
|
||||
List<DataTypeItemResponseModel> responseModels = _mapper.MapEnumerable<IDataType, DataTypeItemResponseModel>(dataTypes);
|
||||
return Ok(responseModels);
|
||||
}
|
||||
}
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.DataType}")]
|
||||
[ApiExplorerSettings(GroupName = "Data Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
public class DatatypeItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
using Umbraco.Extensions;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DataType.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.DataType}")]
|
||||
[ApiExplorerSettings(GroupName = "Data Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDataTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDataTypes)]
|
||||
public class DataTypeTreeControllerBase : FolderTreeControllerBase<DataTypeTreeItemResponseModel>
|
||||
{
|
||||
private readonly IDataTypeService _dataTypeService;
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Dictionary;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("dictionary")]
|
||||
[ApiExplorerSettings(GroupName = "Dictionary")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDictionary)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDictionary)]
|
||||
public abstract class DictionaryControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult DictionaryItemOperationStatusResult(DictionaryItemOperationStatus status) =>
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Dictionary.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/dictionary")]
|
||||
[ApiExplorerSettings(GroupName = "Dictionary")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDictionary)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDictionary)]
|
||||
public class DictionaryItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Dictionary.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/dictionary")]
|
||||
[ApiExplorerSettings(GroupName = "Dictionary")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDictionaryOrTemplates)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDictionaryOrTemplates)]
|
||||
// NOTE: at the moment dictionary items (renamed to dictionary tree) aren't supported by EntityService, so we have little use of the
|
||||
// tree controller base. We'll keep it though, in the hope that we can mend EntityService.
|
||||
public class DictionaryTreeControllerBase : NamedEntityTreeControllerBase<NamedEntityTreeItemResponseModel>
|
||||
|
||||
@@ -12,10 +12,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Document.Collection;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Collection}/{Constants.UdiEntityType.Document}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Document))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocuments)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocuments)]
|
||||
public abstract class DocumentCollectionControllerBase : ContentCollectionControllerBase<IContent, DocumentCollectionResponseModel, DocumentValueModel, DocumentVariantResponseModel>
|
||||
{
|
||||
protected DocumentCollectionControllerBase(IUmbracoMapper mapper)
|
||||
|
||||
@@ -12,11 +12,16 @@ public class ConfigurationDocumentController : DocumentControllerBase
|
||||
{
|
||||
private readonly GlobalSettings _globalSettings;
|
||||
private readonly ContentSettings _contentSettings;
|
||||
private readonly SegmentSettings _segmentSettings;
|
||||
|
||||
public ConfigurationDocumentController(IOptionsSnapshot<GlobalSettings> globalSettings, IOptionsSnapshot<ContentSettings> contentSettings)
|
||||
public ConfigurationDocumentController(
|
||||
IOptionsSnapshot<GlobalSettings> globalSettings,
|
||||
IOptionsSnapshot<ContentSettings> contentSettings,
|
||||
IOptionsSnapshot<SegmentSettings> segmentSettings)
|
||||
{
|
||||
_contentSettings = contentSettings.Value;
|
||||
_globalSettings = globalSettings.Value;
|
||||
_segmentSettings = segmentSettings.Value;
|
||||
}
|
||||
|
||||
[HttpGet("configuration")]
|
||||
@@ -30,7 +35,9 @@ public class ConfigurationDocumentController : DocumentControllerBase
|
||||
DisableUnpublishWhenReferenced = _contentSettings.DisableUnpublishWhenReferenced,
|
||||
SanitizeTinyMce = _globalSettings.SanitizeTinyMce,
|
||||
AllowEditInvariantFromNonDefault = _contentSettings.AllowEditInvariantFromNonDefault,
|
||||
AllowNonExistingSegmentsCreation = _segmentSettings.AllowCreation,
|
||||
};
|
||||
|
||||
return Task.FromResult<IActionResult>(Ok(responseModel));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public class DeleteDocumentController : DocumentControllerBase
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> Delete(Guid id)
|
||||
{
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
User,
|
||||
ContentPermissionResource.WithKeys(ActionDelete.ActionLetter, id),
|
||||
AuthorizationPolicies.ContentPermissionByResource);
|
||||
|
||||
@@ -3,7 +3,6 @@ using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Content;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Content;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Document;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing;
|
||||
@@ -13,10 +12,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Document;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.Document)]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Document))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocuments)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocuments)]
|
||||
public abstract class DocumentControllerBase : ContentControllerBase
|
||||
{
|
||||
protected IActionResult DocumentNotFound()
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Document.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.Document}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Document))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocuments)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocuments)]
|
||||
public class DocumentItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class DeleteDocumentRecycleBinController : DocumentRecycleBinControllerBa
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> Delete(Guid id)
|
||||
{
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
User,
|
||||
ContentPermissionResource.RecycleBin(ActionDelete.ActionLetter),
|
||||
AuthorizationPolicies.ContentPermissionByResource);
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.RecycleBin;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Filters;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Document.RecycleBin;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Document.RecycleBin;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.RecycleBin}/{Constants.UdiEntityType.Document}")]
|
||||
[RequireDocumentTreeRootAccess]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Document))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocuments)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocuments)]
|
||||
public class DocumentRecycleBinControllerBase : RecycleBinControllerBase<DocumentRecycleBinItemResponseModel>
|
||||
{
|
||||
private readonly IDocumentPresentationFactory _documentPresentationFactory;
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.Services.Entities;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Cache;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Services.Entities;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Document.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.Document}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Document))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessForContentTree)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessForContentTree)]
|
||||
public abstract class DocumentTreeControllerBase : UserStartNodeTreeControllerBase<DocumentTreeItemResponseModel>
|
||||
{
|
||||
private readonly IPublicAccessService _publicAccessService;
|
||||
@@ -63,23 +62,17 @@ public abstract class DocumentTreeControllerBase : UserStartNodeTreeControllerBa
|
||||
return responseModel;
|
||||
}
|
||||
|
||||
// TODO: delete these (faking start node setup for unlimited editor)
|
||||
protected override int[] GetUserStartNodeIds() => new[] { -1 };
|
||||
protected override int[] GetUserStartNodeIds()
|
||||
=> _backofficeSecurityAccessor
|
||||
.BackOfficeSecurity?
|
||||
.CurrentUser?
|
||||
.CalculateContentStartNodeIds(EntityService, _appCaches)
|
||||
?? Array.Empty<int>();
|
||||
|
||||
protected override string[] GetUserStartNodePaths() => Array.Empty<string>();
|
||||
|
||||
// TODO: use these implementations instead of the dummy ones above once we have backoffice auth in place
|
||||
// protected override int[] GetUserStartNodeIds()
|
||||
// => _backofficeSecurityAccessor
|
||||
// .BackOfficeSecurity?
|
||||
// .CurrentUser?
|
||||
// .CalculateContentStartNodeIds(EntityService, _appCaches)
|
||||
// ?? Array.Empty<int>();
|
||||
//
|
||||
// protected override string[] GetUserStartNodePaths()
|
||||
// => _backofficeSecurityAccessor
|
||||
// .BackOfficeSecurity?
|
||||
// .CurrentUser?
|
||||
// .GetContentStartNodePaths(EntityService, _appCaches)
|
||||
// ?? Array.Empty<string>();
|
||||
protected override string[] GetUserStartNodePaths()
|
||||
=> _backofficeSecurityAccessor
|
||||
.BackOfficeSecurity?
|
||||
.CurrentUser?
|
||||
.GetContentStartNodePaths(EntityService, _appCaches)
|
||||
?? Array.Empty<string>();
|
||||
}
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentBlueprint.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.DocumentBlueprint}")]
|
||||
[ApiExplorerSettings(GroupName = "Document Blueprint")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessContent)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessContent)]
|
||||
public class DocumentBlueprintItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentBlueprint.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.DocumentBlueprint}")]
|
||||
[ApiExplorerSettings(GroupName = "Document Blueprint")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessContent)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessContent)]
|
||||
public class DocumentBlueprintTreeControllerBase : NamedEntityTreeControllerBase<DocumentBlueprintTreeItemResponseModel>
|
||||
{
|
||||
private readonly IDocumentPresentationFactory _documentPresentationFactory;
|
||||
|
||||
@@ -12,7 +12,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentType;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
public class AllowedAtRootDocumentTypeController : DocumentTypeControllerBase
|
||||
{
|
||||
private readonly IContentTypeService _contentTypeService;
|
||||
|
||||
@@ -14,7 +14,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentType;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentsOrDocumentTypes)]
|
||||
public class AllowedChildrenDocumentTypeController : DocumentTypeControllerBase
|
||||
{
|
||||
private readonly IContentTypeService _contentTypeService;
|
||||
|
||||
@@ -13,11 +13,16 @@ public class ConfigurationDocumentTypeController : DocumentTypeControllerBase
|
||||
{
|
||||
private readonly UmbracoFeatures _umbracoFeatures;
|
||||
private readonly DataTypesSettings _dataTypesSettings;
|
||||
private readonly SegmentSettings _segmentSettings;
|
||||
|
||||
public ConfigurationDocumentTypeController(UmbracoFeatures umbracoFeatures, IOptionsSnapshot<DataTypesSettings> dataTypesSettings)
|
||||
public ConfigurationDocumentTypeController(
|
||||
UmbracoFeatures umbracoFeatures,
|
||||
IOptionsSnapshot<DataTypesSettings> dataTypesSettings,
|
||||
IOptionsSnapshot<SegmentSettings> segmentSettings)
|
||||
{
|
||||
_umbracoFeatures = umbracoFeatures;
|
||||
_dataTypesSettings = dataTypesSettings.Value;
|
||||
_segmentSettings = segmentSettings.Value;
|
||||
}
|
||||
|
||||
[HttpGet("configuration")]
|
||||
@@ -29,7 +34,9 @@ public class ConfigurationDocumentTypeController : DocumentTypeControllerBase
|
||||
{
|
||||
DataTypesCanBeChanged = _dataTypesSettings.CanBeChanged,
|
||||
DisableTemplates = _umbracoFeatures.Disabled.DisableTemplates,
|
||||
UseSegments = _segmentSettings.Enabled,
|
||||
};
|
||||
|
||||
return Task.FromResult<IActionResult>(Ok(responseModel));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentType;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.DocumentType)]
|
||||
[ApiExplorerSettings(GroupName = "Document Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
public abstract class DocumentTypeControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult OperationStatusResult(ContentTypeOperationStatus status)
|
||||
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentType.Folder;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.DocumentType}/folder")]
|
||||
[ApiExplorerSettings(GroupName = "Document Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
public abstract class DocumentTypeFolderControllerBase : FolderManagementControllerBase<IContentType>
|
||||
{
|
||||
protected DocumentTypeFolderControllerBase(
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentType.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute( $"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.DocumentType}")]
|
||||
[ApiExplorerSettings(GroupName = "Document Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
public class DocumentTypeItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DocumentType.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.DocumentType}")]
|
||||
[ApiExplorerSettings(GroupName = "Document Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
public class DocumentTypeTreeControllerBase : FolderTreeControllerBase<DocumentTypeTreeItemResponseModel>
|
||||
{
|
||||
private readonly IContentTypeService _contentTypeService;
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DynamicRoot;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("dynamic-root")]
|
||||
[ApiExplorerSettings(GroupName = "Dynamic Root")]
|
||||
public abstract class DynamicRootControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -10,7 +10,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DynamicRoot;
|
||||
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessContent)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessContent)]
|
||||
[ApiVersion("1.0")]
|
||||
public class GetRootsController : DynamicRootControllerBase
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.DynamicRoot;
|
||||
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessSettings)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
|
||||
[ApiVersion("1.0")]
|
||||
public class GetQueryStepsController : DynamicRootControllerBase
|
||||
{
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System.Linq.Expressions;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.ViewModels;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Folder;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
@@ -36,14 +35,11 @@ public abstract class FolderManagementControllerBase<TTreeEntity> : ManagementAp
|
||||
.Build()));
|
||||
}
|
||||
|
||||
EntityContainer? parentContainer = await _treeEntityTypeContainerService.GetParentAsync(container);
|
||||
|
||||
// we could implement a mapper for this but it seems rather overkill at this point
|
||||
return Ok(new FolderResponseModel
|
||||
{
|
||||
Name = container.Name!,
|
||||
Id = container.Key,
|
||||
Parent = ReferenceByIdModel.ReferenceOrNull(parentContainer?.Key)
|
||||
Id = container.Key
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -7,10 +7,9 @@ using Constants = Umbraco.Cms.Core.Constants;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.HealthCheck.Group;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.HealthChecks.RoutePath.HealthCheck}-group")]
|
||||
[ApiExplorerSettings(GroupName = "Health Check")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessSettings)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
|
||||
public abstract class HealthCheckGroupControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult HealthCheckGroupNotFound() => NotFound(new ProblemDetailsBuilder()
|
||||
|
||||
@@ -6,10 +6,9 @@ using Constants = Umbraco.Cms.Core.Constants;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.HealthCheck;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.HealthChecks.RoutePath.HealthCheck}")]
|
||||
[ApiExplorerSettings(GroupName = "Health Check")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessSettings)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
|
||||
public abstract class HealthCheckControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Help;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("help")]
|
||||
[ApiExplorerSettings(GroupName = "Help")]
|
||||
public abstract class HelpControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Indexer;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("indexer")]
|
||||
[ApiExplorerSettings(GroupName = "Indexer")]
|
||||
public class IndexerControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Api.Management.Filters;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models.Installer;
|
||||
using Umbraco.Cms.Core.Services.OperationStatus;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Install;
|
||||
|
||||
[AllowAnonymous]
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("install")]
|
||||
[ApiExplorerSettings(GroupName = "Install")]
|
||||
[RequireRuntimeLevel(RuntimeLevel.Install)]
|
||||
|
||||
@@ -14,7 +14,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Language;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessLanguages)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessLanguages)]
|
||||
public class CreateLanguageController : LanguageControllerBase
|
||||
{
|
||||
private readonly ILanguageService _languageService;
|
||||
|
||||
@@ -12,7 +12,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Language;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessLanguages)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessLanguages)]
|
||||
public class DeleteLanguageController : LanguageControllerBase
|
||||
{
|
||||
private readonly ILanguageService _languageService;
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Language.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.Language}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Language))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessLanguages)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessLanguages)]
|
||||
public class LanguageEntityControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ using Umbraco.Cms.Core.Services.OperationStatus;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Language;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.Language)]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Language))]
|
||||
public abstract class LanguageControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -14,7 +14,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Language;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessLanguages)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessLanguages)]
|
||||
public class UpdateLanguageController : LanguageControllerBase
|
||||
{
|
||||
private readonly ILanguageService _languageService;
|
||||
|
||||
@@ -7,10 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.LogViewer;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("log-viewer")]
|
||||
[ApiExplorerSettings(GroupName = "Log Viewer")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessSettings)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
|
||||
public abstract class LogViewerControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult LogViewerOperationStatusResult(LogViewerOperationStatus status) =>
|
||||
|
||||
@@ -4,12 +4,10 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.LogViewer.SavedSearch;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("log-viewer/saved-search")]
|
||||
[ApiExplorerSettings(GroupName = "Log Viewer")]
|
||||
public class SavedSearchLogViewerControllerBase : LogViewerControllerBase
|
||||
{
|
||||
|
||||
protected IActionResult SavedSearchNotFound() => NotFound(new ProblemDetailsBuilder()
|
||||
.WithTitle("The saved search could not be found")
|
||||
.Build());
|
||||
|
||||
@@ -16,8 +16,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers;
|
||||
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.BackOfficeAccess)]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.UmbracoFeatureEnabled)]
|
||||
[ApiController]
|
||||
[Authorize(Policy = AuthorizationPolicies.BackOfficeAccess)]
|
||||
[Authorize(Policy = AuthorizationPolicies.UmbracoFeatureEnabled)]
|
||||
[MapToApi(ManagementApiConfiguration.ApiName)]
|
||||
[JsonOptionsName(Constants.JsonOptionsNames.BackOffice)]
|
||||
[AppendEventMessages]
|
||||
|
||||
@@ -12,10 +12,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Media.Collection;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Collection}/{Constants.UdiEntityType.Media}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Media))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessMedia)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessMedia)]
|
||||
public abstract class MediaCollectionControllerBase : ContentCollectionControllerBase<IMedia, MediaCollectionResponseModel, MediaValueModel, MediaVariantResponseModel>
|
||||
{
|
||||
protected MediaCollectionControllerBase(IUmbracoMapper mapper)
|
||||
|
||||
@@ -38,7 +38,7 @@ public class DeleteMediaController : MediaControllerBase
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> Delete(Guid id)
|
||||
{
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
User,
|
||||
MediaPermissionResource.RecycleBin(),
|
||||
AuthorizationPolicies.MediaPermissionByResource);
|
||||
|
||||
@@ -7,11 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Media.Item;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.Media}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Media))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessForMediaTree)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessForMediaTree)]
|
||||
public class MediaItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Common.Builders;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Content;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Content;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Media;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing.Validation;
|
||||
using Umbraco.Cms.Core.Services.OperationStatus;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Media;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.Media)]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Media))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessMedia)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessMedia)]
|
||||
public class MediaControllerBase : ContentControllerBase
|
||||
{
|
||||
protected IActionResult MediaNotFound()
|
||||
|
||||
@@ -42,7 +42,7 @@ public class DeleteMediaRecycleBinController : MediaRecycleBinControllerBase
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> Delete(Guid id)
|
||||
{
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
|
||||
User,
|
||||
MediaPermissionResource.WithKeys(id),
|
||||
AuthorizationPolicies.MediaPermissionByResource);
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.RecycleBin;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Filters;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Media.RecycleBin;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Media.RecycleBin;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.RecycleBin}/{Constants.UdiEntityType.Media}")]
|
||||
[RequireMediaTreeRootAccess]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Media))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessMedia)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessMedia)]
|
||||
public class MediaRecycleBinControllerBase : RecycleBinControllerBase<MediaRecycleBinItemResponseModel>
|
||||
{
|
||||
private readonly IMediaPresentationFactory _mediaPresentationFactory;
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.Services.Entities;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Cache;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Factories;
|
||||
using Umbraco.Cms.Api.Management.Services.Entities;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Media.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.Media}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Media))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessForMediaTree)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessForMediaTree)]
|
||||
public class MediaTreeControllerBase : UserStartNodeTreeControllerBase<MediaTreeItemResponseModel>
|
||||
{
|
||||
private readonly AppCaches _appCaches;
|
||||
@@ -59,23 +58,17 @@ public class MediaTreeControllerBase : UserStartNodeTreeControllerBase<MediaTree
|
||||
return responseModel;
|
||||
}
|
||||
|
||||
// TODO: delete these (faking start node setup for unlimited editor)
|
||||
protected override int[] GetUserStartNodeIds() => new[] { -1 };
|
||||
protected override int[] GetUserStartNodeIds()
|
||||
=> _backofficeSecurityAccessor
|
||||
.BackOfficeSecurity?
|
||||
.CurrentUser?
|
||||
.CalculateMediaStartNodeIds(EntityService, _appCaches)
|
||||
?? Array.Empty<int>();
|
||||
|
||||
protected override string[] GetUserStartNodePaths() => Array.Empty<string>();
|
||||
|
||||
// TODO: use these implementations instead of the dummy ones above once we have backoffice auth in place
|
||||
// protected override int[] GetUserStartNodeIds()
|
||||
// => _backofficeSecurityAccessor
|
||||
// .BackOfficeSecurity?
|
||||
// .CurrentUser?
|
||||
// .CalculateMediaStartNodeIds(EntityService, _appCaches)
|
||||
// ?? Array.Empty<int>();
|
||||
//
|
||||
// protected override string[] GetUserStartNodePaths()
|
||||
// => _backofficeSecurityAccessor
|
||||
// .BackOfficeSecurity?
|
||||
// .CurrentUser?
|
||||
// .GetMediaStartNodePaths(EntityService, _appCaches)
|
||||
// ?? Array.Empty<string>();
|
||||
protected override string[] GetUserStartNodePaths()
|
||||
=> _backofficeSecurityAccessor
|
||||
.BackOfficeSecurity?
|
||||
.CurrentUser?
|
||||
.GetMediaStartNodePaths(EntityService, _appCaches)
|
||||
?? Array.Empty<string>();
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MediaType;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMediaOrMediaTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMediaOrMediaTypes)]
|
||||
public class AllowedAtRootMediaTypeController : MediaTypeControllerBase
|
||||
{
|
||||
private readonly IMediaTypeService _mediaTypeService;
|
||||
|
||||
@@ -15,7 +15,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MediaType;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMediaOrMediaTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMediaOrMediaTypes)]
|
||||
public class AllowedChildrenMediaTypeController : MediaTypeControllerBase
|
||||
{
|
||||
private readonly IMediaTypeService _mediaTypeService;
|
||||
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MediaType.Folder;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.MediaType}/folder")]
|
||||
[ApiExplorerSettings(GroupName = "Media Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
public abstract class MediaTypeFolderControllerBase : FolderManagementControllerBase<IMediaType>
|
||||
{
|
||||
protected MediaTypeFolderControllerBase(
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MediaType.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.MediaType}")]
|
||||
[ApiExplorerSettings(GroupName = "Media Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
public class MediaTypeItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MediaType;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.MediaType)]
|
||||
[ApiExplorerSettings(GroupName = "Media Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
public abstract class MediaTypeControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult OperationStatusResult(ContentTypeOperationStatus status)
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MediaType.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.MediaType}")]
|
||||
[ApiExplorerSettings(GroupName = "Media Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMediaTypes)]
|
||||
public class MediaTypeTreeControllerBase : FolderTreeControllerBase<MediaTypeTreeItemResponseModel>
|
||||
{
|
||||
private readonly IMediaTypeService _mediaTypeService;
|
||||
|
||||
@@ -7,10 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Member.Filter;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Filter}/{Constants.UdiEntityType.Member}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Member))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessForMemberTree)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessForMemberTree)]
|
||||
public abstract class MemberFilterControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult MemberTypeNotFound()
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Member.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.Member}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Member))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessForMemberTree)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessForMemberTree)]
|
||||
public class MemberItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Common.Builders;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Content;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Content;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Member;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing;
|
||||
@@ -11,11 +10,10 @@ using Umbraco.Cms.Core.Services.OperationStatus;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Member;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.Member)]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Member))]
|
||||
// FIXME: implement authorization
|
||||
// [Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessMembers)]
|
||||
// [Authorize(Policy = AuthorizationPolicies.SectionAccessMembers)]
|
||||
public class MemberControllerBase : ContentControllerBase
|
||||
{
|
||||
protected IActionResult MemberNotFound() => OperationStatusResult(MemberEditingOperationStatus.MemberNotFound, MemberNotFound);
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
using Asp.Versioning;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.MemberGroup;
|
||||
using Umbraco.Cms.Core.Mapping;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberGroup;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
public class ByKeyMemberGroupController : MemberGroupControllerBase
|
||||
{
|
||||
private readonly IMemberGroupService _memberGroupService;
|
||||
private readonly IUmbracoMapper _mapper;
|
||||
|
||||
public ByKeyMemberGroupController(IMemberGroupService memberGroupService, IUmbracoMapper mapper)
|
||||
{
|
||||
_memberGroupService = memberGroupService;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
[HttpGet("{id:guid}")]
|
||||
[MapToApiVersion("1.0")]
|
||||
[ProducesResponseType(typeof(MemberGroupResponseModel), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> ByKey(Guid id)
|
||||
{
|
||||
IMemberGroup? memberGroup = await _memberGroupService.GetAsync(id);
|
||||
if (memberGroup is null)
|
||||
{
|
||||
return MemberGroupNotFound();
|
||||
}
|
||||
|
||||
MemberGroupResponseModel responseModel = _mapper.Map<MemberGroupResponseModel>(memberGroup)!;
|
||||
|
||||
return Ok(responseModel);
|
||||
}
|
||||
}
|
||||
@@ -15,14 +15,14 @@ public class DeleteMemberGroupController : MemberGroupControllerBase
|
||||
|
||||
public DeleteMemberGroupController(IMemberGroupService memberGroupService) => _memberGroupService = memberGroupService;
|
||||
|
||||
[HttpDelete("{key:guid}")]
|
||||
[HttpDelete("{id:guid}")]
|
||||
[MapToApiVersion("1.0")]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> Delete(Guid key)
|
||||
public async Task<IActionResult> Delete(Guid id)
|
||||
{
|
||||
Attempt<IMemberGroup?, MemberGroupOperationStatus> result = await _memberGroupService.DeleteAsync(key);
|
||||
Attempt<IMemberGroup?, MemberGroupOperationStatus> result = await _memberGroupService.DeleteAsync(id);
|
||||
return result.Success
|
||||
? Ok()
|
||||
: MemberGroupOperationStatusResult(result.Status);
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberGroup.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.MemberGroup}")]
|
||||
[ApiExplorerSettings(GroupName = "Member Group")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMemberGroups)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMemberGroups)]
|
||||
public class MemberGroupItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberGroup;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.MemberGroup}")]
|
||||
[ApiExplorerSettings(GroupName = "Member Group")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessMembers)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessMembers)]
|
||||
public class MemberGroupControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult MemberGroupOperationStatusResult(MemberGroupOperationStatus status) =>
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberGroup.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.MemberGroup}")]
|
||||
[ApiExplorerSettings(GroupName = "Member Group")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMemberGroups)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMemberGroups)]
|
||||
public class MemberGroupTreeControllerBase : NamedEntityTreeControllerBase<NamedEntityTreeItemResponseModel>
|
||||
{
|
||||
public MemberGroupTreeControllerBase(IEntityService entityService)
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberType.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.MemberType}")]
|
||||
[ApiExplorerSettings(GroupName = "Member Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMemberTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMemberTypes)]
|
||||
public class MemberTypeItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberType;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Constants.UdiEntityType.MemberType)]
|
||||
[ApiExplorerSettings(GroupName = "Member Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMemberTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMemberTypes)]
|
||||
public abstract class MemberTypeControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult OperationStatusResult(ContentTypeOperationStatus status)
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.MemberType.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.MemberType}")]
|
||||
[ApiExplorerSettings(GroupName = "Member Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessMemberTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessMemberTypes)]
|
||||
public class MemberTypeTreeControllerBase : NamedEntityTreeControllerBase<NamedEntityTreeItemResponseModel>
|
||||
{
|
||||
public MemberTypeTreeControllerBase(IEntityService entityService)
|
||||
|
||||
@@ -5,10 +5,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.ModelsBuilder;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("models-builder")]
|
||||
[ApiExplorerSettings(GroupName = "Models Builder")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessSettings)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
|
||||
public class ModelsBuilderControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.ObjectTypes;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("object-types")]
|
||||
[ApiExplorerSettings(GroupName = "Object Types")]
|
||||
public class ObjectTypesControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -4,7 +4,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Package.Created;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("package/created")]
|
||||
[ApiExplorerSettings(GroupName = "Package")]
|
||||
public class CreatedPackageControllerBase : PackageControllerBase
|
||||
|
||||
@@ -7,10 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Package;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("package")]
|
||||
[ApiExplorerSettings(GroupName = "Package")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessPackages)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessPackages)]
|
||||
public abstract class PackageControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult PackageOperationStatusResult(PackageOperationStatus status) =>
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.PartialView.Folder;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.PartialView}/folder")]
|
||||
[ApiExplorerSettings(GroupName = "Partial View")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
public class PartialViewFolderControllerBase : FileSystemManagementControllerBase
|
||||
{
|
||||
protected IActionResult OperationStatusResult(PartialViewFolderOperationStatus status) =>
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.PartialView.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.PartialView}")]
|
||||
[ApiExplorerSettings(GroupName = "Partial View")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
public class PartialViewItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -8,10 +8,9 @@ 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)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
public class PartialViewControllerBase : FileSystemManagementControllerBase
|
||||
{
|
||||
protected IActionResult PartialViewOperationStatusResult(PartialViewOperationStatus status) =>
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.IO;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.IO;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.PartialView.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.PartialView}")]
|
||||
[ApiExplorerSettings(GroupName = "Partial View")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessPartialViews)]
|
||||
public class PartialViewTreeControllerBase : FileSystemTreeControllerBase
|
||||
{
|
||||
public PartialViewTreeControllerBase(FileSystems fileSystems)
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Preview;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("preview")]
|
||||
[ApiExplorerSettings(GroupName = "Preview")]
|
||||
public class PreviewControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -7,10 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Profiling;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("profiling")]
|
||||
[ApiExplorerSettings(GroupName = "Profiling")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessSettings)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
|
||||
public class ProfilingControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult WebProfilerOperationStatusResult(WebProfilerOperationStatus status) =>
|
||||
|
||||
@@ -7,10 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.PropertyType;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("property-type")]
|
||||
[ApiExplorerSettings(GroupName = "Property Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessDocumentTypes)]
|
||||
public abstract class PropertyTypeControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult PropertyTypeOperationStatusResult(PropertyTypeOperationStatus status) =>
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.PublishedCache;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("published-cache")]
|
||||
[ApiExplorerSettings(GroupName = "Published Cache")]
|
||||
public class PublishedCacheControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -5,11 +5,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.RedirectUrlManagement;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("redirect-management")]
|
||||
[ApiExplorerSettings(GroupName = "Redirect Management")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessContent)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessContent)]
|
||||
public class RedirectUrlManagementControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -7,10 +7,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Relation;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("relation")]
|
||||
[ApiExplorerSettings(GroupName = "Relation")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.SectionAccessContent)]
|
||||
[Authorize(Policy = AuthorizationPolicies.SectionAccessContent)]
|
||||
public abstract class RelationControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult RelationOperationStatusResult(RelationOperationStatus status) =>
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.RelationType.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.RelationType}")]
|
||||
[ApiExplorerSettings(GroupName = "Relation Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessRelationTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessRelationTypes)]
|
||||
public class RelationTypeItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.RelationType.Query;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.RelationType}")]
|
||||
[ApiExplorerSettings(GroupName = "Relation Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessRelationTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessRelationTypes)]
|
||||
public class RelationTypeControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult RelationTypeOperationStatusResult(RelationTypeOperationStatus status) =>
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Api.Management.Controllers.Tree;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Api.Management.ViewModels;
|
||||
using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.RelationType.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.RelationType}")]
|
||||
[ApiExplorerSettings(GroupName = "Relation Type")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessRelationTypes)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessRelationTypes)]
|
||||
// NOTE: at the moment relation types aren't supported by EntityService, so we have little use of the
|
||||
// tree controller base. We'll keep it though, in the hope that we can mend EntityService.
|
||||
public class RelationTypeTreeControllerBase : NamedEntityTreeControllerBase<NamedEntityTreeItemResponseModel>
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Script.Folder;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.Script}/folder")]
|
||||
[ApiExplorerSettings(GroupName = "Script")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessScripts)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessScripts)]
|
||||
public class ScriptFolderControllerBase : FileSystemManagementControllerBase
|
||||
{
|
||||
protected IActionResult OperationStatusResult(ScriptFolderOperationStatus status) =>
|
||||
|
||||
@@ -6,10 +6,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Script.Item;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Item}/{Constants.UdiEntityType.Script}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Script))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessScripts)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessScripts)]
|
||||
public class ScriptItemControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
}
|
||||
|
||||
@@ -9,10 +9,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Script;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.UdiEntityType.Script}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Script))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessScripts)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessScripts)]
|
||||
public class ScriptControllerBase : FileSystemManagementControllerBase
|
||||
{
|
||||
protected IActionResult ScriptOperationStatusResult(ScriptOperationStatus status) =>
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Script.Tree;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Tree}/{Constants.UdiEntityType.Script}")]
|
||||
[ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Script))]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.TreeAccessScripts)]
|
||||
[Authorize(Policy = AuthorizationPolicies.TreeAccessScripts)]
|
||||
public class ScriptTreeControllerBase : FileSystemTreeControllerBase
|
||||
{
|
||||
public ScriptTreeControllerBase(FileSystems fileSystems)
|
||||
|
||||
@@ -3,7 +3,6 @@ using Umbraco.Cms.Api.Management.Routing;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Searcher;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("searcher")]
|
||||
[ApiExplorerSettings(GroupName = "Searcher")]
|
||||
public class SearcherControllerBase : ManagementApiControllerBase
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using Asp.Versioning;
|
||||
using Microsoft.AspNetCore;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@@ -14,17 +13,16 @@ using Umbraco.Cms.Api.Common.Builders;
|
||||
using Umbraco.Cms.Api.Management.Routing;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
using Umbraco.Cms.Web.Common.Security;
|
||||
using Umbraco.Extensions;
|
||||
using IdentitySignInResult = Microsoft.AspNetCore.Identity.SignInResult;
|
||||
using SignInResult = Microsoft.AspNetCore.Mvc.SignInResult;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Web.Common.Security;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Security;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute(Common.Security.Paths.BackOfficeApi.EndpointTemplate)]
|
||||
[ApiExplorerSettings(IgnoreApi = true)]
|
||||
public class BackOfficeController : SecurityControllerBase
|
||||
|
||||
@@ -9,7 +9,7 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Security;
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.DenyLocalLoginIfConfigured)]
|
||||
[Authorize(Policy = AuthorizationPolicies.DenyLocalLoginIfConfigured)]
|
||||
// FIXME: Add requiring password reset token policy when its implemented
|
||||
public class ConfigurationSecurityController : SecurityControllerBase
|
||||
{
|
||||
|
||||
@@ -8,10 +8,9 @@ using Umbraco.Cms.Web.Common.Authorization;
|
||||
|
||||
namespace Umbraco.Cms.Api.Management.Controllers.Security;
|
||||
|
||||
[ApiController]
|
||||
[VersionedApiBackOfficeRoute("security")]
|
||||
[ApiExplorerSettings(GroupName = "Security")]
|
||||
[Authorize(Policy = "New" + AuthorizationPolicies.DenyLocalLoginIfConfigured)]
|
||||
[Authorize(Policy = AuthorizationPolicies.DenyLocalLoginIfConfigured)]
|
||||
public abstract class SecurityControllerBase : ManagementApiControllerBase
|
||||
{
|
||||
protected IActionResult UserOperationStatusResult(UserOperationStatus status, ErrorMessageResult? errorMessageResult = null) =>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user