diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
index a831ecd4f1..2b166aa814 100644
--- a/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
+++ b/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
@@ -26,9 +26,9 @@
function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
/** internal method process the saving of data and post processing the result */
- function saveContentItem(content, action, files, restApiUrl) {
+ function saveContentItem(content, action, files, restApiUrl) {
return umbRequestHelper.postSaveContent({
- restApiUrl: restApiUrl,
+ restApiUrl: restApiUrl,
content: content,
action: action,
files: files,
@@ -40,32 +40,40 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
return {
+ allowsCultureVariation: function () {
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "AllowsCultureVariation")),
+ 'Failed to retrieve variant content types');
+ },
- savePermissions: function (saveModel) {
- if (!saveModel) {
- throw "saveModel cannot be null";
- }
- if (!saveModel.contentId) {
- throw "saveModel.contentId cannot be null";
- }
- if (!saveModel.permissions) {
- throw "saveModel.permissions cannot be null";
- }
+ savePermissions: function (saveModel) {
+ if (!saveModel) {
+ throw "saveModel cannot be null";
+ }
+ if (!saveModel.contentId) {
+ throw "saveModel.contentId cannot be null";
+ }
+ if (!saveModel.permissions) {
+ throw "saveModel.permissions cannot be null";
+ }
- return umbRequestHelper.resourcePromise(
- $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostSaveUserGroupPermissions"),
- saveModel),
- 'Failed to save permissions');
- },
+ return umbRequestHelper.resourcePromise(
+ $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostSaveUserGroupPermissions"),
+ saveModel),
+ 'Failed to save permissions');
+ },
getRecycleBin: function () {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetRecycleBin")),
- 'Failed to retrieve data for content recycle bin');
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetRecycleBin")),
+ 'Failed to retrieve data for content recycle bin');
},
/**
@@ -102,12 +110,12 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
}
return umbRequestHelper.resourcePromise(
- $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostSort"),
- {
- parentId: args.parentId,
- idSortOrder: args.sortedIds
- }),
- 'Failed to sort content');
+ $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostSort"),
+ {
+ parentId: args.parentId,
+ idSortOrder: args.sortedIds
+ }),
+ 'Failed to sort content');
},
/**
@@ -145,12 +153,12 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
}
return umbRequestHelper.resourcePromise(
- $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostMove"),
- {
- parentId: args.parentId,
- id: args.id
- }),
- 'Failed to move content');
+ $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostMove"),
+ {
+ parentId: args.parentId,
+ id: args.id
+ }),
+ 'Failed to move content');
},
/**
@@ -189,9 +197,9 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
}
return umbRequestHelper.resourcePromise(
- $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostCopy"),
- args),
- 'Failed to copy content');
+ $http.post(umbRequestHelper.getApiUrl("contentApiBaseUrl", "PostCopy"),
+ args),
+ 'Failed to copy content');
},
/**
@@ -225,12 +233,12 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
}
return umbRequestHelper.resourcePromise(
- $http.post(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "PostUnPublish",
- { id: id, culture: culture })),
- 'Failed to publish content with id ' + id);
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostUnPublish",
+ { id: id, culture: culture })),
+ 'Failed to publish content with id ' + id);
},
/**
* @ngdoc method
@@ -253,11 +261,11 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*/
emptyRecycleBin: function () {
return umbRequestHelper.resourcePromise(
- $http.post(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "EmptyRecycleBin")),
- 'Failed to empty the recycle bin');
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "EmptyRecycleBin")),
+ 'Failed to empty the recycle bin');
},
/**
@@ -282,22 +290,22 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*/
deleteById: function (id) {
return umbRequestHelper.resourcePromise(
- $http.post(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "DeleteById",
- [{ id: id }])),
- 'Failed to delete item ' + id);
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "DeleteById",
+ [{ id: id }])),
+ 'Failed to delete item ' + id);
},
deleteBlueprint: function (id) {
- return umbRequestHelper.resourcePromise(
- $http.post(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "DeleteBlueprint",
- [{ id: id }])),
- 'Failed to delete blueprint ' + id);
+ return umbRequestHelper.resourcePromise(
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "DeleteBlueprint",
+ [{ id: id }])),
+ 'Failed to delete blueprint ' + id);
},
/**
@@ -324,22 +332,22 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*/
getById: function (id, culture) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetById",
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetById",
{ id: id, culture: culture })),
- 'Failed to retrieve data for content id ' + id);
+ 'Failed to retrieve data for content id ' + id);
},
getBlueprintById: function (id) {
- return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetBlueprintById",
- [{ id: id }])),
- 'Failed to retrieve data for content id ' + id);
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetBlueprintById",
+ [{ id: id }])),
+ 'Failed to retrieve data for content id ' + id);
},
/**
@@ -371,12 +379,12 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
});
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetByIds",
- idQuery)),
- 'Failed to retrieve data for content with multiple ids');
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetByIds",
+ idQuery)),
+ 'Failed to retrieve data for content with multiple ids');
},
@@ -415,23 +423,23 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
getScaffold: function (parentId, alias) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetEmpty",
- [{ contentTypeAlias: alias }, { parentId: parentId }])),
- 'Failed to retrieve data for empty content item type ' + alias);
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetEmpty",
+ [{ contentTypeAlias: alias }, { parentId: parentId }])),
+ 'Failed to retrieve data for empty content item type ' + alias);
},
getBlueprintScaffold: function (parentId, blueprintId) {
- return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetEmpty",
- [{ blueprintId: blueprintId }, { parentId: parentId}])),
- 'Failed to retrieve blueprint for id ' + blueprintId);
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetEmpty",
+ [{ blueprintId: blueprintId }, { parentId: parentId }])),
+ 'Failed to retrieve blueprint for id ' + blueprintId);
},
/**
@@ -456,11 +464,11 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*/
getNiceUrl: function (id) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetNiceUrl", [{ id: id }])),
- 'Failed to retrieve url for id:' + id);
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetNiceUrl", [{ id: id }])),
+ 'Failed to retrieve url for id:' + id);
},
/**
@@ -572,21 +580,21 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*/
checkPermission: function (permission, id) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "HasPermission",
- [{ permissionToCheck: permission }, { nodeId: id }])),
- 'Failed to check permission for item ' + id);
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "HasPermission",
+ [{ permissionToCheck: permission }, { nodeId: id }])),
+ 'Failed to check permission for item ' + id);
},
getDetailedPermissions: function (contentId) {
- return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetDetailedPermissions", { contentId: contentId })),
- 'Failed to retrieve permissions for content item ' + contentId);
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetDetailedPermissions", { contentId: contentId })),
+ 'Failed to retrieve permissions for content item ' + contentId);
},
getPermissions: function (nodeIds) {
@@ -628,17 +636,17 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*
*/
save: function (content, isNew, files) {
- var endpoint = umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "PostSave");
- return saveContentItem(content, "save" + (isNew ? "New" : ""), files, endpoint);
+ var endpoint = umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostSave");
+ return saveContentItem(content, "save" + (isNew ? "New" : ""), files, endpoint);
},
saveBlueprint: function (content, isNew, files) {
- var endpoint = umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "PostSaveBlueprint");
- return saveContentItem(content, "save" + (isNew ? "New" : ""), files, endpoint);
+ var endpoint = umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostSaveBlueprint");
+ return saveContentItem(content, "save" + (isNew ? "New" : ""), files, endpoint);
},
/**
@@ -670,10 +678,10 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*
*/
publish: function (content, isNew, files) {
- var endpoint = umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "PostSave");
- return saveContentItem(content, "publish" + (isNew ? "New" : ""), files, endpoint);
+ var endpoint = umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostSave");
+ return saveContentItem(content, "publish" + (isNew ? "New" : ""), files, endpoint);
},
@@ -704,10 +712,10 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*
*/
sendToPublish: function (content, isNew, files) {
- var endpoint = umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "PostSave");
- return saveContentItem(content, "sendPublish" + (isNew ? "New" : ""), files, endpoint);
+ var endpoint = umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostSave");
+ return saveContentItem(content, "sendPublish" + (isNew ? "New" : ""), files, endpoint);
},
/**
@@ -737,12 +745,12 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
}
return umbRequestHelper.resourcePromise(
- $http.post(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "PostPublishById",
- [{ id: id }])),
- 'Failed to publish content with id ' + id);
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostPublishById",
+ [{ id: id }])),
+ 'Failed to publish content with id ' + id);
},
diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js
index 2b0fd341d3..8bfcdfcc5a 100644
--- a/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js
+++ b/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js
@@ -166,15 +166,6 @@ function contentTypeResource($q, $http, umbRequestHelper, umbDataFormatter) {
'Failed to retrieve all content types');
},
- allowsVariation: function() {
- return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentTypeApiBaseUrl",
- "AllowsVariation")),
- 'Failed to retrieve variant content types');
- },
-
getScaffold: function (parentId) {
return umbRequestHelper.resourcePromise(
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js
index 034f2c5a3a..5c3e6eb4c8 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js
@@ -7,10 +7,6 @@ function contentTypeHelper(contentTypeResource, dataTypeResource, $filter, $inje
var contentTypeHelperService = {
- allowsVariation: function() {
- return contentTypeResource.allowsVariation();
- },
-
createIdArray: function(array) {
var newArray = [];
diff --git a/src/Umbraco.Web.UI.Client/src/controllers/navigation.controller.js b/src/Umbraco.Web.UI.Client/src/controllers/navigation.controller.js
index d44ef023ec..bea1deb9f5 100644
--- a/src/Umbraco.Web.UI.Client/src/controllers/navigation.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/controllers/navigation.controller.js
@@ -9,7 +9,7 @@
*
* @param {navigationService} navigationService A reference to the navigationService
*/
-function NavigationController($scope, $rootScope, $location, $log, $q, $routeParams, $timeout, treeService, appState, navigationService, keyboardService, dialogService, historyService, eventsService, sectionResource, angularHelper, languageResource, contentTypeHelper) {
+function NavigationController($scope, $rootScope, $location, $log, $q, $routeParams, $timeout, treeService, appState, navigationService, keyboardService, dialogService, historyService, eventsService, sectionResource, angularHelper, languageResource, contentResource) {
//this is used to trigger the tree to start loading once everything is ready
var treeInitPromise = $q.defer();
@@ -209,47 +209,18 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar
$scope.showSearchResults = args.value;
}
- //load languages if doc types allow variations
- if ($scope.currentSection === "content") {
- contentTypeHelper.allowsVariation().then(function (b) {
- if (b === "true") {
- //load languages if there are more than 1
- loadLanguages();
- } else {
- $scope.languages = [];
- init();
- }
-
- });
- }
}));
// Listen for language updates
evts.push(eventsService.on("editors.languages.languageDeleted", function (e, args) {
- languageResource.getAll().then(function (languages) {
- contentTypeHelper.allowsVariation().then(function (b) {
-
- if (b === "true") {
- $scope.languages = languages;
- } else {
- $scope.languages = [];
- }
-
- });
+ loadLanguages().then(function (languages) {
+ $scope.languages = languages;
});
}));
evts.push(eventsService.on("editors.languages.languageCreated", function (e, args) {
- languageResource.getAll().then(function (languages) {
- contentTypeHelper.allowsVariation().then(function (b) {
-
- if (b === "true") {
- $scope.languages = languages;
- } else {
- $scope.languages = [];
- }
-
- });
+ loadLanguages().then(function (languages) {
+ $scope.languages = languages;
});
}));
@@ -341,12 +312,26 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar
});
}
+ /**
+ * This loads the language data, if the are no variant content types configured this will return no languages
+ */
+ function loadLanguages() {
+
+ return contentResource.allowsCultureVariation().then(function (b) {
+ if (b === "true") {
+ return languageResource.getAll()
+ } else {
+ return $q.when([]); //resolve an empty collection
+ }
+ });
+ }
+
/**
* Called once during init to initialize the navigation/tree/languages
*/
function initNav() {
// load languages
- languageResource.getAll().then(function (languages) {
+ loadLanguages().then(function (languages) {
$scope.languages = languages;
@@ -398,7 +383,7 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar
$scope.selectLanguage = function (language) {
$location.search("mculture", language.culture);
-
+
// close the language selector
$scope.page.languageSelectorIsOpen = false;
diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs
index 3490e7e8fa..14d5029682 100644
--- a/src/Umbraco.Web/Editors/ContentController.cs
+++ b/src/Umbraco.Web/Editors/ContentController.cs
@@ -64,6 +64,18 @@ namespace Umbraco.Web.Editors
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetNiceUrl", "id", typeof(int), typeof(Guid), typeof(Udi))));
}
}
+
+ ///
+ /// Returns true if any content types have culture variation enabled
+ ///
+ ///
+ [HttpGet]
+ [WebApi.UmbracoAuthorize, OverrideAuthorization]
+ public bool AllowsCultureVariation()
+ {
+ var contentTypes = Services.ContentTypeService.GetAll();
+ return contentTypes.Any(contentType => contentType.Variations.HasAny(ContentVariation.CultureNeutral | ContentVariation.CultureSegment));
+ }
///
/// Return content for the specified ids
diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs
index 04065e82ce..bd881f7fcf 100644
--- a/src/Umbraco.Web/Editors/ContentTypeController.cs
+++ b/src/Umbraco.Web/Editors/ContentTypeController.cs
@@ -35,12 +35,6 @@ namespace Umbraco.Web.Editors
{
return Services.ContentTypeService.Count();
}
- [HttpGet]
- public bool AllowsVariation()
- {
- var contentTypes = Services.ContentTypeService.GetAll();
- return contentTypes.Any(contentType => contentType.Variations.HasFlag(ContentVariation.CultureNeutral));
- }
public DocumentTypeDisplay GetById(int id)
{
diff --git a/src/Umbraco.Web/Editors/LanguageController.cs b/src/Umbraco.Web/Editors/LanguageController.cs
index 8bf9d70a12..96019da702 100644
--- a/src/Umbraco.Web/Editors/LanguageController.cs
+++ b/src/Umbraco.Web/Editors/LanguageController.cs
@@ -12,6 +12,7 @@ using Umbraco.Core.Persistence;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
+using Umbraco.Web.WebApi.Filters;
using Language = Umbraco.Web.Models.ContentEditing.Language;
namespace Umbraco.Web.Editors
@@ -81,6 +82,7 @@ namespace Umbraco.Web.Editors
///
/// Deletes a language with a given ID
///
+ [UmbracoTreeAuthorize(Core.Constants.Trees.Languages)]
[HttpDelete]
[HttpPost]
public IHttpActionResult DeleteLanguage(int id)
@@ -104,6 +106,7 @@ namespace Umbraco.Web.Editors
///
/// Creates or saves a language
///
+ [UmbracoTreeAuthorize(Core.Constants.Trees.Languages)]
[HttpPost]
public Language SaveLanguage(Language language)
{
diff --git a/src/Umbraco.Web/Trees/ContentTreeController.cs b/src/Umbraco.Web/Trees/ContentTreeController.cs
index 1054e4a7fa..c19cecd712 100644
--- a/src/Umbraco.Web/Trees/ContentTreeController.cs
+++ b/src/Umbraco.Web/Trees/ContentTreeController.cs
@@ -257,24 +257,22 @@ namespace Umbraco.Web.Trees
return;
}
- if (entity is IDocumentEntitySlim docEntity)
+ if (!(entity is IDocumentEntitySlim docEntity))
+ throw new InvalidOperationException($"Cannot render a tree node for a culture when the entity isn't {typeof(IDocumentEntitySlim)}, instead it is {entity.GetType()}");
+
+ // we are getting the tree for a given culture,
+ // for those items that DO support cultures, we need to get the proper name, IF it exists
+ // otherwise, invariant is fine
+
+ if (docEntity.Variations.Has(Core.Models.ContentVariation.CultureNeutral) &&
+ docEntity.CultureNames.TryGetValue(culture, out var name) &&
+ !string.IsNullOrWhiteSpace(name))
{
- // we are getting the tree for a given culture,
- // for those items that DO support cultures, we need to get the proper name, IF it exists
- // otherwise, invariant is fine
-
- if (docEntity.Variations.Has(Core.Models.ContentVariation.CultureNeutral) &&
- docEntity.CultureNames.TryGetValue(culture, out var name) &&
- !string.IsNullOrWhiteSpace(name))
- {
- entity.Name = name;
- }
-
- if (string.IsNullOrWhiteSpace(entity.Name))
- entity.Name = "[[" + entity.Id + "]]";
+ entity.Name = name;
}
-
- throw new InvalidOperationException($"Cannot render a tree node for a culture when the entity isn't {typeof(IDocumentEntitySlim)}, instead it is {entity.GetType()}");
+
+ if (string.IsNullOrWhiteSpace(entity.Name))
+ entity.Name = "[[" + entity.Id + "]]";
}
private void AddActionNode(IUmbracoEntity item, MenuItemCollection menu, bool hasSeparator = false, bool convert = false)
diff --git a/src/Umbraco.Web/WebApi/Filters/EnableOverrideAuthorizationAttribute.cs b/src/Umbraco.Web/WebApi/Filters/EnableOverrideAuthorizationAttribute.cs
index ef230bea49..b5a3f395ad 100644
--- a/src/Umbraco.Web/WebApi/Filters/EnableOverrideAuthorizationAttribute.cs
+++ b/src/Umbraco.Web/WebApi/Filters/EnableOverrideAuthorizationAttribute.cs
@@ -11,6 +11,6 @@ namespace Umbraco.Web.WebApi.Filters
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public sealed class EnableOverrideAuthorizationAttribute : Attribute
{
- //TODO: Can we remove this and use the System.Web.Http.OverrideAuthorizationAttribute which uses IOverrideFilter instead?
+ //fixme we should remove this and use the System.Web.Http.OverrideAuthorizationAttribute which uses IOverrideFilter instead
}
}
diff --git a/src/Umbraco.Web/WebApi/Filters/OverridableAuthorizationAttribute.cs b/src/Umbraco.Web/WebApi/Filters/OverridableAuthorizationAttribute.cs
index 2d110d9a8b..b63e9d1505 100644
--- a/src/Umbraco.Web/WebApi/Filters/OverridableAuthorizationAttribute.cs
+++ b/src/Umbraco.Web/WebApi/Filters/OverridableAuthorizationAttribute.cs
@@ -5,6 +5,8 @@ using System.Web.Http.Controllers;
namespace Umbraco.Web.WebApi.Filters
{
+ //fixme remove this since we don't need it, see notes in EnableOverrideAuthorizationAttribute
+
///
/// Abstract auth filter class that can be used to enable overriding class auth filters at the action level
///