From 1770a0abec28c2b972da07a3ec3af6c2fc0c2877 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 14 Feb 2019 12:40:45 +0100 Subject: [PATCH] Inject IUmbracoContextAccessor instead of UmbracoContext --- .../Routing/RenderRouteHandlerTests.cs | 14 ++++--- .../TestControllerActivator.cs | 8 ++-- .../TestControllerActivatorBase.cs | 6 +-- .../ControllerTesting/TestRunner.cs | 6 +-- .../ControllerTesting/TestStartup.cs | 4 +- .../Stubs/TestControllerFactory.cs | 12 +++--- .../Web/Controllers/ContentControllerTests.cs | 24 +++++------ .../Controllers/PluginControllerAreaTests.cs | 16 ++++---- .../Web/Controllers/UsersControllerTests.cs | 12 +++--- ...RenderIndexActionSelectorAttributeTests.cs | 15 +++++-- .../Web/Mvc/SurfaceControllerTests.cs | 24 +++++++---- src/Umbraco.Web/Controllers/TagsController.cs | 3 +- .../Controllers/UmbLoginController.cs | 3 +- .../Controllers/UmbLoginStatusController.cs | 3 +- .../Controllers/UmbProfileController.cs | 4 +- .../Controllers/UmbRegisterController.cs | 3 +- .../Editors/AuthenticationController.cs | 3 +- .../Editors/BackOfficeController.cs | 4 +- .../BackOfficeNotificationsController.cs | 3 +- src/Umbraco.Web/Editors/CodeFileController.cs | 5 ++- src/Umbraco.Web/Editors/ContentController.cs | 3 +- .../Editors/ContentControllerBase.cs | 3 +- .../Editors/ContentTypeController.cs | 4 +- .../Editors/ContentTypeControllerBase.cs | 10 ++--- .../Editors/DashboardController.cs | 8 ++-- src/Umbraco.Web/Editors/DataTypeController.cs | 3 +- .../Editors/DictionaryController.cs | 7 ++-- src/Umbraco.Web/Editors/EntityController.cs | 4 +- .../UserGroupAuthorizationAttribute.cs | 10 ++--- src/Umbraco.Web/Editors/MacrosController.cs | 5 ++- src/Umbraco.Web/Editors/MediaController.cs | 3 +- .../Editors/MediaTypeController.cs | 5 ++- src/Umbraco.Web/Editors/MemberController.cs | 3 +- .../Editors/MemberTypeController.cs | 11 ++--- .../Editors/PackageInstallController.cs | 12 +++--- src/Umbraco.Web/Editors/PreviewController.cs | 8 ++-- .../Editors/RelationTypeController.cs | 5 ++- src/Umbraco.Web/Editors/SectionController.cs | 8 ++-- src/Umbraco.Web/Editors/TemplateController.cs | 3 +- .../UmbracoAuthorizedJsonController.cs | 3 +- src/Umbraco.Web/Editors/UsersController.cs | 3 +- .../Controllers/InstallApiController.cs | 8 +--- .../Install/Controllers/InstallController.cs | 8 ++-- .../Install/HttpInstallAuthorizeAttribute.cs | 12 +++--- .../Install/InstallAuthorizeAttribute.cs | 12 +++--- src/Umbraco.Web/Install/InstallHelper.cs | 4 +- .../InstallSteps/StarterKitDownloadStep.cs | 12 +++--- .../InstallSteps/StarterKitInstallStep.cs | 8 ++-- .../EnsurePublishedContentRequestAttribute.cs | 16 ++++---- src/Umbraco.Web/Mvc/PluginController.cs | 17 +++++--- .../Mvc/RedirectToUmbracoPageResult.cs | 41 ++++++++++--------- src/Umbraco.Web/Mvc/RenderMvcController.cs | 4 +- src/Umbraco.Web/Mvc/SurfaceController.cs | 23 ++++++----- .../Mvc/UmbracoAuthorizedController.cs | 4 +- src/Umbraco.Web/Mvc/UmbracoController.cs | 23 +++++++---- .../Trees/ApplicationTreeController.cs | 6 +-- src/Umbraco.Web/Trees/TreeController.cs | 4 +- src/Umbraco.Web/Trees/TreeControllerBase.cs | 3 +- .../UmbracoAuthorizedHttpHandler.cs | 6 +-- src/Umbraco.Web/UmbracoHttpHandler.cs | 12 +++--- .../WebApi/UmbracoApiController.cs | 3 +- .../WebApi/UmbracoApiControllerBase.cs | 18 +++++--- .../WebApi/UmbracoAuthorizedApiController.cs | 3 +- 63 files changed, 296 insertions(+), 244 deletions(-) diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index c7282ee9c8..6141695738 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -102,7 +102,8 @@ namespace Umbraco.Tests.Routing frequest.PublishedContent = umbracoContext.ContentCache.GetById(1174); frequest.TemplateModel = template; - var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContext, Mock.Of())); + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); + var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of())); handler.GetHandlerForRoute(umbracoContext.HttpContext.Request.RequestContext, frequest); Assert.AreEqual("RenderMvc", routeData.Values["controller"].ToString()); @@ -137,14 +138,15 @@ namespace Umbraco.Tests.Routing frequest.PublishedContent = umbracoContext.ContentCache.GetById(1172); frequest.TemplateModel = template; + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var type = new AutoPublishedContentType(22, "CustomDocument", new PublishedPropertyType[] { }); ContentTypesCache.GetPublishedContentTypeByAlias = alias => type; - var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContext, Mock.Of(), context => + var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of(), context => { - var membershipHelper = new MembershipHelper(new TestUmbracoContextAccessor(umbracoContext), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()); + var membershipHelper = new MembershipHelper(umbracoContextAccessor, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()); return new CustomDocumentController(Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -185,8 +187,8 @@ namespace Umbraco.Tests.Routing /// public class CustomDocumentController : RenderMvcController { - public CustomDocumentController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, services, appCaches, profilingLogger, umbracoHelper) + public CustomDocumentController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, umbracoHelper) { } diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivator.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivator.cs index 2f7e50ea1e..6b67377202 100644 --- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivator.cs +++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivator.cs @@ -7,16 +7,16 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting { public class TestControllerActivator : TestControllerActivatorBase { - private readonly Func _factory; + private readonly Func _factory; - public TestControllerActivator(Func factory) + public TestControllerActivator(Func factory) { _factory = factory; } - protected override ApiController CreateController(Type controllerType, HttpRequestMessage msg, UmbracoContext umbracoContext, UmbracoHelper helper) + protected override ApiController CreateController(Type controllerType, HttpRequestMessage msg, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { - return _factory(msg, umbracoContext, helper); + return _factory(msg, umbracoContextAccessor, helper); } } } diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs index 4e352488be..10b6242b9d 100644 --- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs +++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs @@ -152,16 +152,16 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting var membershipHelper = new MembershipHelper(new TestUmbracoContextAccessor(umbCtx), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()); - var umbHelper = new UmbracoHelper(umbCtx, + var umbHelper = new UmbracoHelper(umbCtx, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), membershipHelper); - return CreateController(controllerType, request, umbCtx, umbHelper); + return CreateController(controllerType, request, umbracoContextAccessor, umbHelper); } - protected abstract ApiController CreateController(Type controllerType, HttpRequestMessage msg, UmbracoContext umbracoContext, UmbracoHelper helper); + protected abstract ApiController CreateController(Type controllerType, HttpRequestMessage msg, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper); } } diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestRunner.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestRunner.cs index 86d8cbdd5e..8c598281dd 100644 --- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestRunner.cs +++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestRunner.cs @@ -15,9 +15,9 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting { public class TestRunner { - private readonly Func _controllerFactory; + private readonly Func _controllerFactory; - public TestRunner(Func controllerFactory) + public TestRunner(Func controllerFactory) { _controllerFactory = controllerFactory; } @@ -74,7 +74,7 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting { Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); } - + return Tuple.Create(response, json); } } diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestStartup.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestStartup.cs index 6143432faf..0827a1f786 100644 --- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestStartup.cs +++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestStartup.cs @@ -16,10 +16,10 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting /// public class TestStartup { - private readonly Func _controllerFactory; + private readonly Func _controllerFactory; private readonly Action _initialize; - public TestStartup(Action initialize, Func controllerFactory) + public TestStartup(Action initialize, Func controllerFactory) { _controllerFactory = controllerFactory; _initialize = initialize; diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs index 9889b8d0c2..e27fe17bbe 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs @@ -17,19 +17,19 @@ namespace Umbraco.Tests.TestHelpers.Stubs /// internal class TestControllerFactory : IControllerFactory { - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly ILogger _logger; private readonly Func _factory; - public TestControllerFactory(UmbracoContext umbracoContext, ILogger logger) + public TestControllerFactory(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger) { - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _logger = logger; } - public TestControllerFactory(UmbracoContext umbracoContext, ILogger logger, Func factory) + public TestControllerFactory(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, Func factory) { - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _logger = logger; _factory = factory; } @@ -48,7 +48,7 @@ namespace Umbraco.Tests.TestHelpers.Stubs var possibleParams = new object[] { - _umbracoContext, _logger + _umbracoContextAccessor, _logger }; var ctors = t.GetConstructors(); foreach (var ctor in ctors.OrderByDescending(x => x.GetParameters().Length)) diff --git a/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs b/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs index d0c09d3340..a4213b4f0e 100644 --- a/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs +++ b/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs @@ -239,7 +239,7 @@ namespace Umbraco.Tests.Web.Controllers [Test] public async Task PostSave_Validate_Existing_Content() { - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var contentServiceMock = Mock.Get(Current.Services.ContentService); contentServiceMock.Setup(x => x.GetById(123)).Returns(() => null); //do not find it @@ -249,7 +249,7 @@ namespace Umbraco.Tests.Web.Controllers var controller = new ContentController( propertyEditorCollection, Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -276,13 +276,13 @@ namespace Umbraco.Tests.Web.Controllers [Test] public async Task PostSave_Validate_At_Least_One_Variant_Flagged_For_Saving() { - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())); var controller = new ContentController( propertyEditorCollection, Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -314,7 +314,7 @@ namespace Umbraco.Tests.Web.Controllers [Test] public async Task PostSave_Validate_Properties_Exist() { - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var contentServiceMock = Mock.Get(Current.Services.ContentService); contentServiceMock.Setup(x => x.GetById(123)).Returns(() => GetMockedContent()); @@ -323,7 +323,7 @@ namespace Umbraco.Tests.Web.Controllers var controller = new ContentController( propertyEditorCollection, Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -358,7 +358,7 @@ namespace Umbraco.Tests.Web.Controllers { var content = GetMockedContent(); - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var contentServiceMock = Mock.Get(Current.Services.ContentService); contentServiceMock.Setup(x => x.GetById(123)).Returns(() => content); @@ -369,7 +369,7 @@ namespace Umbraco.Tests.Web.Controllers var controller = new ContentController( propertyEditorCollection, Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -396,7 +396,7 @@ namespace Umbraco.Tests.Web.Controllers { var content = GetMockedContent(); - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var contentServiceMock = Mock.Get(Current.Services.ContentService); contentServiceMock.Setup(x => x.GetById(123)).Returns(() => content); @@ -407,7 +407,7 @@ namespace Umbraco.Tests.Web.Controllers var controller = new ContentController( propertyEditorCollection, Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -440,7 +440,7 @@ namespace Umbraco.Tests.Web.Controllers { var content = GetMockedContent(); - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var contentServiceMock = Mock.Get(Current.Services.ContentService); contentServiceMock.Setup(x => x.GetById(123)).Returns(() => content); @@ -451,7 +451,7 @@ namespace Umbraco.Tests.Web.Controllers var controller = new ContentController( propertyEditorCollection, Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), diff --git a/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs b/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs index 4c738df003..ed0c02b806 100644 --- a/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs +++ b/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs @@ -53,8 +53,8 @@ namespace Umbraco.Tests.Web.Controllers [PluginController("Area1")] public class Plugin1Controller : PluginController { - public Plugin1Controller(UmbracoContext umbracoContext) - : base(umbracoContext, null, null, null, null, null, null) + public Plugin1Controller(IUmbracoContextAccessor umbracoContextAccessor) + : base(umbracoContextAccessor, null, null, null, null, null, null) { } } @@ -62,8 +62,8 @@ namespace Umbraco.Tests.Web.Controllers [PluginController("Area1")] public class Plugin2Controller : PluginController { - public Plugin2Controller(UmbracoContext umbracoContext) - : base(umbracoContext, null, null, null, null, null, null) + public Plugin2Controller(IUmbracoContextAccessor umbracoContextAccessor) + : base(umbracoContextAccessor, null, null, null, null, null, null) { } } @@ -71,16 +71,16 @@ namespace Umbraco.Tests.Web.Controllers [PluginController("Area2")] public class Plugin3Controller : PluginController { - public Plugin3Controller(UmbracoContext umbracoContext) - : base(umbracoContext, null, null, null, null, null, null) + public Plugin3Controller(IUmbracoContextAccessor umbracoContextAccessor) + : base(umbracoContextAccessor, null, null, null, null, null, null) { } } public class Plugin4Controller : PluginController { - public Plugin4Controller(UmbracoContext umbracoContext) - : base(umbracoContext, null, null, null, null, null, null) + public Plugin4Controller(IUmbracoContextAccessor umbracoContextAccessor) + : base(umbracoContextAccessor, null, null, null, null, null, null) { } } diff --git a/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs b/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs index 3905e62037..c48aa2717c 100644 --- a/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs +++ b/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs @@ -53,7 +53,7 @@ namespace Umbraco.Tests.Web.Controllers [Test] public async System.Threading.Tasks.Task Save_User() { - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { //setup some mocks Umbraco.Core.Configuration.GlobalSettings.HasSmtpServer = true; @@ -74,7 +74,7 @@ namespace Umbraco.Tests.Web.Controllers var usersController = new UsersController( Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -134,11 +134,11 @@ namespace Umbraco.Tests.Web.Controllers [Test] public async System.Threading.Tasks.Task GetPagedUsers_Empty() { - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { var usersController = new UsersController( Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), @@ -160,7 +160,7 @@ namespace Umbraco.Tests.Web.Controllers [Test] public async System.Threading.Tasks.Task GetPagedUsers_10() { - ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper) + ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper) { //setup some mocks var userServiceMock = Mock.Get(Current.Services.UserService); @@ -173,7 +173,7 @@ namespace Umbraco.Tests.Web.Controllers var usersController = new UsersController( Factory.GetInstance(), - umbracoContext, + umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), diff --git a/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs b/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs index 29deeb31ec..a76321528b 100644 --- a/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs @@ -76,7 +76,8 @@ namespace Umbraco.Tests.Web.Mvc globalSettings, new TestVariationContextAccessor(), true); - var ctrl = new MatchesDefaultIndexController { UmbracoContext = umbCtx }; + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbCtx); + var ctrl = new MatchesDefaultIndexController { UmbracoContextAccessor = umbracoContextAccessor }; var controllerCtx = new ControllerContext(req, ctrl); var result = attr.IsValidForRequest(controllerCtx, GetRenderMvcControllerIndexMethodFromCurrentType(ctrl.GetType())); @@ -100,7 +101,9 @@ namespace Umbraco.Tests.Web.Mvc globalSettings, new TestVariationContextAccessor(), true); - var ctrl = new MatchesOverriddenIndexController { UmbracoContext = umbCtx }; + + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbCtx); + var ctrl = new MatchesOverriddenIndexController { UmbracoContextAccessor = umbracoContextAccessor }; var controllerCtx = new ControllerContext(req, ctrl); var result = attr.IsValidForRequest(controllerCtx, GetRenderMvcControllerIndexMethodFromCurrentType(ctrl.GetType())); @@ -124,7 +127,9 @@ namespace Umbraco.Tests.Web.Mvc globalSettings, new TestVariationContextAccessor(), true); - var ctrl = new MatchesCustomIndexController { UmbracoContext = umbCtx }; + + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbCtx); + var ctrl = new MatchesCustomIndexController { UmbracoContextAccessor = umbracoContextAccessor }; var controllerCtx = new ControllerContext(req, ctrl); var result = attr.IsValidForRequest(controllerCtx, GetRenderMvcControllerIndexMethodFromCurrentType(ctrl.GetType())); @@ -148,7 +153,9 @@ namespace Umbraco.Tests.Web.Mvc globalSettings, new TestVariationContextAccessor(), true); - var ctrl = new MatchesAsyncIndexController { UmbracoContext = umbCtx }; + + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbCtx); + var ctrl = new MatchesAsyncIndexController { UmbracoContextAccessor = umbracoContextAccessor }; var controllerCtx = new ControllerContext(req, ctrl); var result = attr.IsValidForRequest(controllerCtx, GetRenderMvcControllerIndexMethodFromCurrentType(ctrl.GetType())); diff --git a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs index b3ae7e3dd6..738b108da0 100644 --- a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs @@ -51,7 +51,9 @@ namespace Umbraco.Tests.Web.Mvc new TestVariationContextAccessor(), true); - var ctrl = new TestSurfaceController(umbracoContext); + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); + + var ctrl = new TestSurfaceController(umbracoContextAccessor); var result = ctrl.Index(); @@ -62,7 +64,7 @@ namespace Umbraco.Tests.Web.Mvc public void Umbraco_Context_Not_Null() { var globalSettings = TestObjects.GetGlobalSettings(); - var umbCtx = UmbracoContext.EnsureContext( + var umbracoContext = UmbracoContext.EnsureContext( Current.UmbracoContextAccessor, new Mock().Object, Mock.Of(), @@ -73,11 +75,13 @@ namespace Umbraco.Tests.Web.Mvc new TestVariationContextAccessor(), true); - var ctrl = new TestSurfaceController(umbCtx); + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); + + var ctrl = new TestSurfaceController(umbracoContextAccessor); Assert.IsNotNull(ctrl.UmbracoContext); } - + [Test] public void Can_Lookup_Content() { @@ -99,6 +103,8 @@ namespace Umbraco.Tests.Web.Mvc new TestVariationContextAccessor(), true); + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); + var helper = new UmbracoHelper( umbracoContext, Mock.Of(), @@ -107,7 +113,7 @@ namespace Umbraco.Tests.Web.Mvc Mock.Of(query => query.Content(2) == content.Object), new MembershipHelper(new TestUmbracoContextAccessor(umbracoContext), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); - var ctrl = new TestSurfaceController(umbracoContext, helper); + var ctrl = new TestSurfaceController(umbracoContextAccessor, helper); var result = ctrl.GetContent(2) as PublishedContentResult; Assert.IsNotNull(result); @@ -132,6 +138,8 @@ namespace Umbraco.Tests.Web.Mvc new TestVariationContextAccessor(), true); + var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); + var content = Mock.Of(publishedContent => publishedContent.Id == 12345); var contextBase = umbracoContext.HttpContext; @@ -147,7 +155,7 @@ namespace Umbraco.Tests.Web.Mvc var routeData = new RouteData(); routeData.DataTokens.Add(Core.Constants.Web.UmbracoRouteDefinitionDataToken, routeDefinition); - var ctrl = new TestSurfaceController(umbracoContext, new UmbracoHelper()); + var ctrl = new TestSurfaceController(umbracoContextAccessor, new UmbracoHelper()); ctrl.ControllerContext = new ControllerContext(contextBase, routeData, ctrl); var result = ctrl.GetContentFromCurrentPage() as PublishedContentResult; @@ -157,8 +165,8 @@ namespace Umbraco.Tests.Web.Mvc public class TestSurfaceController : SurfaceController { - public TestSurfaceController(UmbracoContext ctx, UmbracoHelper helper = null) - : base(ctx, null, ServiceContext.CreatePartial(), Mock.Of(), null, null, helper) + public TestSurfaceController(IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper = null) + : base(umbracoContextAccessor, null, ServiceContext.CreatePartial(), Mock.Of(), null, null, helper) { } diff --git a/src/Umbraco.Web/Controllers/TagsController.cs b/src/Umbraco.Web/Controllers/TagsController.cs index 5dca84eee1..b65d4de531 100644 --- a/src/Umbraco.Web/Controllers/TagsController.cs +++ b/src/Umbraco.Web/Controllers/TagsController.cs @@ -24,7 +24,8 @@ namespace Umbraco.Web.Controllers { } - public TagsController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public TagsController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } diff --git a/src/Umbraco.Web/Controllers/UmbLoginController.cs b/src/Umbraco.Web/Controllers/UmbLoginController.cs index ea526f47a9..2980b4a4c0 100644 --- a/src/Umbraco.Web/Controllers/UmbLoginController.cs +++ b/src/Umbraco.Web/Controllers/UmbLoginController.cs @@ -15,7 +15,8 @@ namespace Umbraco.Web.Controllers { } - public UmbLoginController(UmbracoContext umbracoContext, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) : base(umbracoContext, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) + public UmbLoginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) { } diff --git a/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs b/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs index e63f15b9c9..fdc2de8c5f 100644 --- a/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs +++ b/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs @@ -17,7 +17,8 @@ namespace Umbraco.Web.Controllers { } - public UmbLoginStatusController(UmbracoContext umbracoContext, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) : base(umbracoContext, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) + public UmbLoginStatusController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) { } diff --git a/src/Umbraco.Web/Controllers/UmbProfileController.cs b/src/Umbraco.Web/Controllers/UmbProfileController.cs index d30f08040e..b14652ad2e 100644 --- a/src/Umbraco.Web/Controllers/UmbProfileController.cs +++ b/src/Umbraco.Web/Controllers/UmbProfileController.cs @@ -17,8 +17,8 @@ namespace Umbraco.Web.Controllers public UmbProfileController() { } - public UmbProfileController(UmbracoContext umbracoContext, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) - : base(umbracoContext, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) + public UmbProfileController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) { } [HttpPost] diff --git a/src/Umbraco.Web/Controllers/UmbRegisterController.cs b/src/Umbraco.Web/Controllers/UmbRegisterController.cs index a60b5cffdb..b0187d6127 100644 --- a/src/Umbraco.Web/Controllers/UmbRegisterController.cs +++ b/src/Umbraco.Web/Controllers/UmbRegisterController.cs @@ -17,7 +17,8 @@ namespace Umbraco.Web.Controllers { } - public UmbRegisterController(UmbracoContext umbracoContext, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) : base(umbracoContext, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) + public UmbRegisterController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) { } diff --git a/src/Umbraco.Web/Editors/AuthenticationController.cs b/src/Umbraco.Web/Editors/AuthenticationController.cs index f5652cc5fb..4f339a36fd 100644 --- a/src/Umbraco.Web/Editors/AuthenticationController.cs +++ b/src/Umbraco.Web/Editors/AuthenticationController.cs @@ -43,7 +43,8 @@ namespace Umbraco.Web.Editors private BackOfficeUserManager _userManager; private BackOfficeSignInManager _signInManager; - public AuthenticationController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public AuthenticationController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 91a3f6778b..9add60aade 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -49,8 +49,8 @@ namespace Umbraco.Web.Editors private const string TokenPasswordResetCode = "PasswordResetCode"; private static readonly string[] TempDataTokenNames = { TokenExternalSignInError, TokenPasswordResetCode }; - public BackOfficeController(ManifestParser manifestParser, UmbracoFeatures features, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, services, appCaches, profilingLogger, umbracoHelper) + public BackOfficeController(ManifestParser manifestParser, UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, umbracoHelper) { _manifestParser = manifestParser; _features = features; diff --git a/src/Umbraco.Web/Editors/BackOfficeNotificationsController.cs b/src/Umbraco.Web/Editors/BackOfficeNotificationsController.cs index d83c5c8fb6..aebd13b6c4 100644 --- a/src/Umbraco.Web/Editors/BackOfficeNotificationsController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeNotificationsController.cs @@ -18,7 +18,8 @@ namespace Umbraco.Web.Editors [PrefixlessBodyModelValidator] public abstract class BackOfficeNotificationsController : UmbracoAuthorizedJsonController { - protected BackOfficeNotificationsController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected BackOfficeNotificationsController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } } diff --git a/src/Umbraco.Web/Editors/CodeFileController.cs b/src/Umbraco.Web/Editors/CodeFileController.cs index 4a29530068..bd6b837c2c 100644 --- a/src/Umbraco.Web/Editors/CodeFileController.cs +++ b/src/Umbraco.Web/Editors/CodeFileController.cs @@ -34,7 +34,8 @@ namespace Umbraco.Web.Editors [UmbracoApplicationAuthorize(Core.Constants.Applications.Settings)] public class CodeFileController : BackOfficeNotificationsController { - public CodeFileController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public CodeFileController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } @@ -514,7 +515,7 @@ namespace Umbraco.Web.Editors private Stylesheet CreateOrUpdateStylesheet(CodeFileDisplay display) { return CreateOrUpdateFile(display, ".css", Current.FileSystems.StylesheetsFileSystem, - name => Services.FileService.GetStylesheetByName(name), + name => Services.FileService.GetStylesheetByName(name), (stylesheet, userId) => Services.FileService.SaveStylesheet(stylesheet, userId), name => new Stylesheet(name) ); diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs index 011c69c336..cdcc4ed11c 100644 --- a/src/Umbraco.Web/Editors/ContentController.cs +++ b/src/Umbraco.Web/Editors/ContentController.cs @@ -57,7 +57,8 @@ namespace Umbraco.Web.Editors public object Domains { get; private set; } - public ContentController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public ContentController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _propertyEditors = propertyEditors ?? throw new ArgumentNullException(nameof(propertyEditors)); _allLangs = new Lazy>(() => Services.LocalizationService.GetAllLanguages().ToDictionary(x => x.IsoCode, x => x, StringComparer.InvariantCultureIgnoreCase)); diff --git a/src/Umbraco.Web/Editors/ContentControllerBase.cs b/src/Umbraco.Web/Editors/ContentControllerBase.cs index 2a4d38d6f4..300c777b3a 100644 --- a/src/Umbraco.Web/Editors/ContentControllerBase.cs +++ b/src/Umbraco.Web/Editors/ContentControllerBase.cs @@ -26,7 +26,8 @@ namespace Umbraco.Web.Editors [JsonDateTimeFormatAttribute] public abstract class ContentControllerBase : BackOfficeNotificationsController { - protected ContentControllerBase(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected ContentControllerBase(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs index 8a56c87ad9..bf2ef62028 100644 --- a/src/Umbraco.Web/Editors/ContentTypeController.cs +++ b/src/Umbraco.Web/Editors/ContentTypeController.cs @@ -51,11 +51,11 @@ namespace Umbraco.Web.Editors public ContentTypeController(IEntityXmlSerializer serializer, ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, - UmbracoContext umbracoContext, + IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, PropertyEditorCollection propertyEditors, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) - : base(cultureDictionaryFactory, globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + : base(cultureDictionaryFactory, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _serializer = serializer; _propertyEditors = propertyEditors; diff --git a/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs b/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs index b3baaf3e03..e46f32746e 100644 --- a/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs +++ b/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs @@ -33,13 +33,13 @@ namespace Umbraco.Web.Editors private readonly ICultureDictionaryFactory _cultureDictionaryFactory; private ICultureDictionary _cultureDictionary; - protected ContentTypeControllerBase(ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected ContentTypeControllerBase(ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _cultureDictionaryFactory = cultureDictionaryFactory; } - + /// /// Returns the available composite content types for a given content type @@ -102,7 +102,7 @@ namespace Umbraco.Web.Editors var availableCompositions = Services.ContentTypeService.GetAvailableCompositeContentTypes(source, allContentTypes, filterContentTypes, filterPropertyTypes); - + var currCompositions = source == null ? new IContentTypeComposition[] { } : source.ContentTypeComposition.ToArray(); var compAliases = currCompositions.Select(x => x.Alias).ToArray(); @@ -156,7 +156,7 @@ namespace Umbraco.Web.Editors /// /// Returns a list of content types where a particular composition content type is used /// - /// Type of content Type, eg documentType or mediaType + /// Type of content Type, eg documentType or mediaType /// Id of composition content type /// protected IEnumerable PerformGetWhereCompositionIsUsedInContentTypes(int contentTypeId, UmbracoObjectTypes type) diff --git a/src/Umbraco.Web/Editors/DashboardController.cs b/src/Umbraco.Web/Editors/DashboardController.cs index 9a9ab72845..a56792138a 100644 --- a/src/Umbraco.Web/Editors/DashboardController.cs +++ b/src/Umbraco.Web/Editors/DashboardController.cs @@ -31,12 +31,12 @@ namespace Umbraco.Web.Editors public class DashboardController : UmbracoApiController { private readonly IDashboardService _dashboardService; - + /// /// Initializes a new instance of the with all its dependencies. /// - public DashboardController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, IDashboardService dashboardService, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public DashboardController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, IDashboardService dashboardService, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _dashboardService = dashboardService; } @@ -152,7 +152,7 @@ namespace Umbraco.Web.Editors } - //Make remote call to fetch videos or remote dashboard feed data + //Make remote call to fetch videos or remote dashboard feed data var key = $"umbraco-XML-feed-{site}-{url.ToCleanString(Core.Strings.CleanStringType.UrlSegment)}"; var content = AppCaches.RuntimeCache.GetCacheItem(key); diff --git a/src/Umbraco.Web/Editors/DataTypeController.cs b/src/Umbraco.Web/Editors/DataTypeController.cs index 117bc33cc4..0a24bbb4d2 100644 --- a/src/Umbraco.Web/Editors/DataTypeController.cs +++ b/src/Umbraco.Web/Editors/DataTypeController.cs @@ -39,7 +39,8 @@ namespace Umbraco.Web.Editors { private readonly PropertyEditorCollection _propertyEditors; - public DataTypeController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public DataTypeController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _propertyEditors = propertyEditors; } diff --git a/src/Umbraco.Web/Editors/DictionaryController.cs b/src/Umbraco.Web/Editors/DictionaryController.cs index 186b3ac4a4..86cf31200e 100644 --- a/src/Umbraco.Web/Editors/DictionaryController.cs +++ b/src/Umbraco.Web/Editors/DictionaryController.cs @@ -34,7 +34,8 @@ namespace Umbraco.Web.Editors [EnableOverrideAuthorization] public class DictionaryController : BackOfficeNotificationsController { - public DictionaryController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public DictionaryController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } @@ -51,7 +52,7 @@ namespace Umbraco.Web.Editors if (foundDictionary == null) throw new HttpResponseException(HttpStatusCode.NotFound); - + Services.LocalizationService.Delete(foundDictionary, Security.CurrentUser.Id); return Request.CreateResponse(HttpStatusCode.OK); @@ -137,7 +138,7 @@ namespace Umbraco.Web.Editors /// /// /// The . - /// + /// public DictionaryDisplay PostSave(DictionarySave dictionary) { var dictionaryItem = diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index d89909d793..e55cff10c4 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -47,9 +47,9 @@ namespace Umbraco.Web.Editors private readonly UmbracoTreeSearcher _treeSearcher; private readonly SearchableTreeCollection _searchableTreeCollection; - public EntityController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, + public EntityController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, ITreeService treeService, UmbracoHelper umbracoHelper, SearchableTreeCollection searchableTreeCollection, UmbracoTreeSearcher treeSearcher) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _treeService = treeService; _searchableTreeCollection = searchableTreeCollection; diff --git a/src/Umbraco.Web/Editors/Filters/UserGroupAuthorizationAttribute.cs b/src/Umbraco.Web/Editors/Filters/UserGroupAuthorizationAttribute.cs index 4293c31660..9ed304d97a 100644 --- a/src/Umbraco.Web/Editors/Filters/UserGroupAuthorizationAttribute.cs +++ b/src/Umbraco.Web/Editors/Filters/UserGroupAuthorizationAttribute.cs @@ -14,18 +14,18 @@ namespace Umbraco.Web.Editors.Filters internal class UserGroupAuthorizationAttribute : AuthorizeAttribute { private readonly string _paramName; - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; /// /// THIS SHOULD BE ONLY USED FOR UNIT TESTS /// /// /// - public UserGroupAuthorizationAttribute(string paramName, UmbracoContext umbracoContext) + public UserGroupAuthorizationAttribute(string paramName, IUmbracoContextAccessor umbracoContextAccessor) { - if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); + if (umbracoContextAccessor == null) throw new ArgumentNullException(nameof(umbracoContextAccessor)); _paramName = paramName; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } public UserGroupAuthorizationAttribute(string paramName) @@ -35,7 +35,7 @@ namespace Umbraco.Web.Editors.Filters private UmbracoContext GetUmbracoContext() { - return _umbracoContext ?? UmbracoContext.Current; + return _umbracoContextAccessor.UmbracoContext ?? UmbracoContext.Current; } protected override bool IsAuthorized(HttpActionContext actionContext) diff --git a/src/Umbraco.Web/Editors/MacrosController.cs b/src/Umbraco.Web/Editors/MacrosController.cs index 38ec0ffc1b..d7d50236d5 100644 --- a/src/Umbraco.Web/Editors/MacrosController.cs +++ b/src/Umbraco.Web/Editors/MacrosController.cs @@ -21,7 +21,7 @@ using Umbraco.Web.WebApi.Filters; using Constants = Umbraco.Core.Constants; namespace Umbraco.Web.Editors -{ +{ /// /// The API controller used for editing dictionary items @@ -32,7 +32,8 @@ namespace Umbraco.Web.Editors { private readonly IMacroService _macroService; - public MacrosController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public MacrosController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _macroService = Services.MacroService; } diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs index fb6ca39289..1411e6aca4 100644 --- a/src/Umbraco.Web/Editors/MediaController.cs +++ b/src/Umbraco.Web/Editors/MediaController.cs @@ -49,7 +49,8 @@ namespace Umbraco.Web.Editors [MediaControllerControllerConfiguration] public class MediaController : ContentControllerBase { - public MediaController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public MediaController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _propertyEditors = propertyEditors ?? throw new ArgumentNullException(nameof(propertyEditors)); _contentTypeBaseServiceProvider = contentTypeBaseServiceProvider; diff --git a/src/Umbraco.Web/Editors/MediaTypeController.cs b/src/Umbraco.Web/Editors/MediaTypeController.cs index c85ef439dd..ce0b0d7653 100644 --- a/src/Umbraco.Web/Editors/MediaTypeController.cs +++ b/src/Umbraco.Web/Editors/MediaTypeController.cs @@ -37,7 +37,8 @@ namespace Umbraco.Web.Editors [MediaTypeControllerControllerConfiguration] public class MediaTypeController : ContentTypeControllerBase { - public MediaTypeController(ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(cultureDictionaryFactory, globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public MediaTypeController(ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(cultureDictionaryFactory, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } @@ -313,6 +314,6 @@ namespace Umbraco.Web.Editors doCopy: (type, i) => Services.MediaTypeService.Copy(type, i)); } - + } } diff --git a/src/Umbraco.Web/Editors/MemberController.cs b/src/Umbraco.Web/Editors/MemberController.cs index cdc1fd3ce1..fb4bddb08c 100644 --- a/src/Umbraco.Web/Editors/MemberController.cs +++ b/src/Umbraco.Web/Editors/MemberController.cs @@ -46,7 +46,8 @@ namespace Umbraco.Web.Editors [OutgoingNoHyphenGuidFormat] public class MemberController : ContentControllerBase { - public MemberController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public MemberController(PropertyEditorCollection propertyEditors, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _propertyEditors = propertyEditors ?? throw new ArgumentNullException(nameof(propertyEditors)); } diff --git a/src/Umbraco.Web/Editors/MemberTypeController.cs b/src/Umbraco.Web/Editors/MemberTypeController.cs index a1a9a97572..59a9af14c2 100644 --- a/src/Umbraco.Web/Editors/MemberTypeController.cs +++ b/src/Umbraco.Web/Editors/MemberTypeController.cs @@ -27,10 +27,11 @@ namespace Umbraco.Web.Editors /// An API controller used for dealing with member types /// [PluginController("UmbracoApi")] - [UmbracoTreeAuthorize(new string[] { Constants.Trees.MemberTypes, Constants.Trees.Members})] + [UmbracoTreeAuthorize(new string[] { Constants.Trees.MemberTypes, Constants.Trees.Members})] public class MemberTypeController : ContentTypeControllerBase { - public MemberTypeController(ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(cultureDictionaryFactory, globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public MemberTypeController(ICultureDictionaryFactory cultureDictionaryFactory, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(cultureDictionaryFactory, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } @@ -141,7 +142,7 @@ namespace Umbraco.Web.Editors // Id 0 means the property was just added, no need to look it up if (prop.Id == 0) continue; - + var foundOnContentType = ct.PropertyTypes.FirstOrDefault(x => x.Id == prop.Id); if (foundOnContentType == null) throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No property type with id " + prop.Id + " found on the content type")); @@ -161,7 +162,7 @@ namespace Umbraco.Web.Editors } } } - + var savedCt = PerformPostSave( contentTypeSave: contentTypeSave, @@ -177,6 +178,6 @@ namespace Umbraco.Web.Editors return display; } - + } } diff --git a/src/Umbraco.Web/Editors/PackageInstallController.cs b/src/Umbraco.Web/Editors/PackageInstallController.cs index 63be647a12..9f629cafa6 100644 --- a/src/Umbraco.Web/Editors/PackageInstallController.cs +++ b/src/Umbraco.Web/Editors/PackageInstallController.cs @@ -34,10 +34,10 @@ namespace Umbraco.Web.Editors [UmbracoApplicationAuthorize(Core.Constants.Applications.Packages)] public class PackageInstallController : UmbracoAuthorizedJsonController { - public PackageInstallController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, + public PackageInstallController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } @@ -85,8 +85,8 @@ namespace Umbraco.Web.Editors return Ok(); } - - + + private void PopulateFromPackageData(LocalPackageInstallModel model) { var zipFile = new FileInfo(Path.Combine(IOHelper.MapPath(SystemDirectories.Packages), model.ZipFileName)); @@ -156,7 +156,7 @@ namespace Umbraco.Web.Editors if (ext.InvariantEquals("zip") || ext.InvariantEquals("umb")) { //we always save package files to /App_Data/packages/package-guid.umb for processing as a standard so lets copy. - + var packagesFolder = IOHelper.MapPath(SystemDirectories.Packages); Directory.CreateDirectory(packagesFolder); var packageFile = Path.Combine(packagesFolder, model.PackageGuid + ".umb"); @@ -284,7 +284,7 @@ namespace Umbraco.Web.Editors default: throw new ArgumentOutOfRangeException(); } - + return model; } diff --git a/src/Umbraco.Web/Editors/PreviewController.cs b/src/Umbraco.Web/Editors/PreviewController.cs index 5507104860..c1848419dc 100644 --- a/src/Umbraco.Web/Editors/PreviewController.cs +++ b/src/Umbraco.Web/Editors/PreviewController.cs @@ -22,20 +22,20 @@ namespace Umbraco.Web.Editors private readonly UmbracoFeatures _features; private readonly IGlobalSettings _globalSettings; private readonly IPublishedSnapshotService _publishedSnapshotService; - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly ILocalizationService _localizationService; public PreviewController( UmbracoFeatures features, IGlobalSettings globalSettings, IPublishedSnapshotService publishedSnapshotService, - UmbracoContext umbracoContext, + IUmbracoContextAccessor umbracoContextAccessor, ILocalizationService localizationService) { _features = features; _globalSettings = globalSettings; _publishedSnapshotService = publishedSnapshotService; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _localizationService = localizationService; } @@ -80,7 +80,7 @@ namespace Umbraco.Web.Editors [UmbracoAuthorize] public ActionResult Frame(int id, string culture) { - var user = _umbracoContext.Security.CurrentUser; + var user = _umbracoContextAccessor.UmbracoContext.Security.CurrentUser; var previewToken = _publishedSnapshotService.EnterPreview(user, id); diff --git a/src/Umbraco.Web/Editors/RelationTypeController.cs b/src/Umbraco.Web/Editors/RelationTypeController.cs index 7113e30909..f0f4a440c7 100644 --- a/src/Umbraco.Web/Editors/RelationTypeController.cs +++ b/src/Umbraco.Web/Editors/RelationTypeController.cs @@ -27,7 +27,8 @@ namespace Umbraco.Web.Editors [EnableOverrideAuthorization] public class RelationTypeController : BackOfficeNotificationsController { - public RelationTypeController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public RelationTypeController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } @@ -44,7 +45,7 @@ namespace Umbraco.Web.Editors { throw new HttpResponseException(HttpStatusCode.NotFound); } - + var relations = Services.RelationService.GetByRelationTypeId(relationType.Id); var display = Mapper.Map(relationType); diff --git a/src/Umbraco.Web/Editors/SectionController.cs b/src/Umbraco.Web/Editors/SectionController.cs index 52034b9c95..6d6a3bb987 100644 --- a/src/Umbraco.Web/Editors/SectionController.cs +++ b/src/Umbraco.Web/Editors/SectionController.cs @@ -26,9 +26,9 @@ namespace Umbraco.Web.Editors private readonly ISectionService _sectionService; private readonly ITreeService _treeService; - public SectionController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, + public SectionController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, IDashboardService dashboardService, ISectionService sectionService, ITreeService treeService, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _dashboardService = dashboardService; _sectionService = sectionService; @@ -40,10 +40,10 @@ namespace Umbraco.Web.Editors var sections = _sectionService.GetAllowedSections(Security.GetUserId().ResultOr(0)); var sectionModels = sections.Select(Mapper.Map
).ToArray(); - + // this is a bit nasty since we'll be proxying via the app tree controller but we sort of have to do that // since tree's by nature are controllers and require request contextual data - var appTreeController = new ApplicationTreeController(GlobalSettings, UmbracoContext, SqlContext, Services, AppCaches, Logger, RuntimeState, _treeService, _sectionService, Umbraco) + var appTreeController = new ApplicationTreeController(GlobalSettings, UmbracoContextAccessor, SqlContext, Services, AppCaches, Logger, RuntimeState, _treeService, _sectionService, Umbraco) { ControllerContext = ControllerContext }; diff --git a/src/Umbraco.Web/Editors/TemplateController.cs b/src/Umbraco.Web/Editors/TemplateController.cs index 17faf4349f..e1b86c62ea 100644 --- a/src/Umbraco.Web/Editors/TemplateController.cs +++ b/src/Umbraco.Web/Editors/TemplateController.cs @@ -23,7 +23,8 @@ namespace Umbraco.Web.Editors [UmbracoTreeAuthorize(Constants.Trees.Templates)] public class TemplateController : BackOfficeNotificationsController { - public TemplateController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public TemplateController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } diff --git a/src/Umbraco.Web/Editors/UmbracoAuthorizedJsonController.cs b/src/Umbraco.Web/Editors/UmbracoAuthorizedJsonController.cs index 32e56965b3..385ed89b8f 100644 --- a/src/Umbraco.Web/Editors/UmbracoAuthorizedJsonController.cs +++ b/src/Umbraco.Web/Editors/UmbracoAuthorizedJsonController.cs @@ -24,7 +24,8 @@ namespace Umbraco.Web.Editors { } - protected UmbracoAuthorizedJsonController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected UmbracoAuthorizedJsonController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } } diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index 3789e22b49..8b618afde5 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -45,7 +45,8 @@ namespace Umbraco.Web.Editors [IsCurrentUserModelFilter] public class UsersController : UmbracoAuthorizedJsonController { - public UsersController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + public UsersController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } diff --git a/src/Umbraco.Web/Install/Controllers/InstallApiController.cs b/src/Umbraco.Web/Install/Controllers/InstallApiController.cs index dc315c571a..d151df46f7 100644 --- a/src/Umbraco.Web/Install/Controllers/InstallApiController.cs +++ b/src/Umbraco.Web/Install/Controllers/InstallApiController.cs @@ -22,9 +22,8 @@ namespace Umbraco.Web.Install.Controllers private readonly InstallStepCollection _installSteps; private readonly ILogger _logger; - public InstallApiController(UmbracoContext umbracoContext, DatabaseBuilder databaseBuilder, IProfilingLogger proflog, InstallHelper installHelper, InstallStepCollection installSteps) + public InstallApiController(DatabaseBuilder databaseBuilder, IProfilingLogger proflog, InstallHelper installHelper, InstallStepCollection installSteps) { - UmbracoContext = umbracoContext ?? throw new ArgumentNullException(nameof(umbracoContext)); _databaseBuilder = databaseBuilder ?? throw new ArgumentNullException(nameof(databaseBuilder)); _proflog = proflog ?? throw new ArgumentNullException(nameof(proflog)); _installSteps = installSteps; @@ -32,11 +31,6 @@ namespace Umbraco.Web.Install.Controllers _logger = _proflog; } - /// - /// Gets the Umbraco context. - /// - public UmbracoContext UmbracoContext { get; } - internal InstallHelper InstallHelper { get; } public bool PostValidateDatabaseConnection(DatabaseModel model) diff --git a/src/Umbraco.Web/Install/Controllers/InstallController.cs b/src/Umbraco.Web/Install/Controllers/InstallController.cs index 4dbb21a38f..cd616be8db 100644 --- a/src/Umbraco.Web/Install/Controllers/InstallController.cs +++ b/src/Umbraco.Web/Install/Controllers/InstallController.cs @@ -19,15 +19,15 @@ namespace Umbraco.Web.Install.Controllers [InstallAuthorize] public class InstallController : Controller { - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly InstallHelper _installHelper; private readonly IRuntimeState _runtime; private readonly ILogger _logger; private readonly IGlobalSettings _globalSettings; - public InstallController(UmbracoContext umbracoContext, InstallHelper installHelper, IRuntimeState runtime, ILogger logger, IGlobalSettings globalSettings) + public InstallController(IUmbracoContextAccessor umbracoContextAccessor, InstallHelper installHelper, IRuntimeState runtime, ILogger logger, IGlobalSettings globalSettings) { - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _installHelper = installHelper; _runtime = runtime; _logger = logger; @@ -49,7 +49,7 @@ namespace Umbraco.Web.Install.Controllers // Delete ClientDependency temp directories to make sure we get fresh caches var clientDependencyTempFilesDeleted = clientDependencyConfig.ClearTempFiles(HttpContext); - var result = _umbracoContext.Security.ValidateCurrentUser(false); + var result = _umbracoContextAccessor.UmbracoContext.Security.ValidateCurrentUser(false); switch (result) { diff --git a/src/Umbraco.Web/Install/HttpInstallAuthorizeAttribute.cs b/src/Umbraco.Web/Install/HttpInstallAuthorizeAttribute.cs index e135a83e81..966b2d6c80 100644 --- a/src/Umbraco.Web/Install/HttpInstallAuthorizeAttribute.cs +++ b/src/Umbraco.Web/Install/HttpInstallAuthorizeAttribute.cs @@ -22,23 +22,23 @@ namespace Umbraco.Web.Install // so... either access them via Current service locator, OR use an action filter alongside this attribute (see articles). // the second solution is nicer BUT for the time being, let's use the first (simpler). - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IRuntimeState _runtimeState; private IRuntimeState RuntimeState => _runtimeState ?? Current.RuntimeState; - private UmbracoContext UmbracoContext => _umbracoContext ?? Current.UmbracoContext; + private UmbracoContext UmbracoContext => _umbracoContextAccessor.UmbracoContext ?? Current.UmbracoContext; /// /// THIS SHOULD BE ONLY USED FOR UNIT TESTS /// - /// + /// /// - public HttpInstallAuthorizeAttribute(UmbracoContext umbracoContext, IRuntimeState runtimeState) + public HttpInstallAuthorizeAttribute(IUmbracoContextAccessor umbracoContextAccessor, IRuntimeState runtimeState) { - if (umbracoContext == null) throw new ArgumentNullException(nameof(umbracoContext)); + if (umbracoContextAccessor == null) throw new ArgumentNullException(nameof(umbracoContextAccessor)); if (runtimeState == null) throw new ArgumentNullException(nameof(runtimeState)); - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _runtimeState = runtimeState; } diff --git a/src/Umbraco.Web/Install/InstallAuthorizeAttribute.cs b/src/Umbraco.Web/Install/InstallAuthorizeAttribute.cs index 2041228a3e..0321708d0b 100644 --- a/src/Umbraco.Web/Install/InstallAuthorizeAttribute.cs +++ b/src/Umbraco.Web/Install/InstallAuthorizeAttribute.cs @@ -14,23 +14,23 @@ namespace Umbraco.Web.Install internal class InstallAuthorizeAttribute : AuthorizeAttribute { // see note in HttpInstallAuthorizeAttribute - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IRuntimeState _runtimeState; private IRuntimeState RuntimeState => _runtimeState ?? Current.RuntimeState; - private UmbracoContext UmbracoContext => _umbracoContext ?? Current.UmbracoContext; + private UmbracoContext UmbracoContext => _umbracoContextAccessor.UmbracoContext ?? Current.UmbracoContext; /// /// THIS SHOULD BE ONLY USED FOR UNIT TESTS /// - /// + /// /// - public InstallAuthorizeAttribute(UmbracoContext umbracoContext, IRuntimeState runtimeState) + public InstallAuthorizeAttribute(IUmbracoContextAccessor umbracoContextAccessor, IRuntimeState runtimeState) { - if (umbracoContext == null) throw new ArgumentNullException(nameof(umbracoContext)); + if (umbracoContextAccessor == null) throw new ArgumentNullException(nameof(umbracoContextAccessor)); if (runtimeState == null) throw new ArgumentNullException(nameof(runtimeState)); - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _runtimeState = runtimeState; } diff --git a/src/Umbraco.Web/Install/InstallHelper.cs b/src/Umbraco.Web/Install/InstallHelper.cs index f9519ebe8a..effb46c9b7 100644 --- a/src/Umbraco.Web/Install/InstallHelper.cs +++ b/src/Umbraco.Web/Install/InstallHelper.cs @@ -26,11 +26,11 @@ namespace Umbraco.Web.Install private readonly IGlobalSettings _globalSettings; private InstallationType? _installationType; - public InstallHelper(UmbracoContext umbracoContext, + public InstallHelper(IUmbracoContextAccessor umbracoContextAccessor, DatabaseBuilder databaseBuilder, ILogger logger, IGlobalSettings globalSettings) { - _httpContext = umbracoContext.HttpContext; + _httpContext = umbracoContextAccessor.UmbracoContext.HttpContext; _logger = logger; _globalSettings = globalSettings; _databaseBuilder = databaseBuilder; diff --git a/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs b/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs index 82526904d2..78b58a509e 100644 --- a/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs @@ -18,14 +18,14 @@ namespace Umbraco.Web.Install.InstallSteps internal class StarterKitDownloadStep : InstallSetupStep { private readonly InstallHelper _installHelper; - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IContentService _contentService; private readonly IPackagingService _packageService; - public StarterKitDownloadStep(IContentService contentService, IPackagingService packageService, InstallHelper installHelper, UmbracoContext umbracoContext) + public StarterKitDownloadStep(IContentService contentService, IPackagingService packageService, InstallHelper installHelper, IUmbracoContextAccessor umbracoContextAccessor) { _installHelper = installHelper; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _contentService = contentService; _packageService = packageService; } @@ -64,17 +64,17 @@ namespace Umbraco.Web.Install.InstallSteps private async Task<(string packageFile, int packageId)> DownloadPackageFilesAsync(Guid kitGuid) { //Go get the package file from the package repo - var packageFile = await _packageService.FetchPackageFileAsync(kitGuid, UmbracoVersion.Current, _umbracoContext.Security.GetUserId().ResultOr(0)); + var packageFile = await _packageService.FetchPackageFileAsync(kitGuid, UmbracoVersion.Current, _umbracoContextAccessor.UmbracoContext.Security.GetUserId().ResultOr(0)); if (packageFile == null) throw new InvalidOperationException("Could not fetch package file " + kitGuid); //add an entry to the installedPackages.config var compiledPackage = _packageService.GetCompiledPackageInfo(packageFile); var packageDefinition = PackageDefinition.FromCompiledPackage(compiledPackage); packageDefinition.PackagePath = packageFile.FullName; - + _packageService.SaveInstalledPackage(packageDefinition); - _packageService.InstallCompiledPackageFiles(packageDefinition, packageFile, _umbracoContext.Security.GetUserId().ResultOr(-1)); + _packageService.InstallCompiledPackageFiles(packageDefinition, packageFile, _umbracoContextAccessor.UmbracoContext.Security.GetUserId().ResultOr(-1)); return (compiledPackage.PackageFile.Name, packageDefinition.Id); } diff --git a/src/Umbraco.Web/Install/InstallSteps/StarterKitInstallStep.cs b/src/Umbraco.Web/Install/InstallSteps/StarterKitInstallStep.cs index 62c2f87c08..539b261cf3 100644 --- a/src/Umbraco.Web/Install/InstallSteps/StarterKitInstallStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/StarterKitInstallStep.cs @@ -15,13 +15,13 @@ namespace Umbraco.Web.Install.InstallSteps internal class StarterKitInstallStep : InstallSetupStep { private readonly HttpContextBase _httContext; - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IPackagingService _packagingService; - public StarterKitInstallStep(HttpContextBase httContext, UmbracoContext umbracoContext, IPackagingService packagingService) + public StarterKitInstallStep(HttpContextBase httContext, IUmbracoContextAccessor umbracoContextAccessor, IPackagingService packagingService) { _httContext = httContext; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; _packagingService = packagingService; } @@ -46,7 +46,7 @@ namespace Umbraco.Web.Install.InstallSteps var packageFile = new FileInfo(definition.PackagePath); - _packagingService.InstallCompiledPackageData(definition, packageFile, _umbracoContext.Security.GetUserId().ResultOr(-1)); + _packagingService.InstallCompiledPackageData(definition, packageFile, _umbracoContextAccessor.UmbracoContext.Security.GetUserId().ResultOr(-1)); } public override bool RequiresExecution(object model) diff --git a/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs b/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs index c6fc1d907f..496cacca65 100644 --- a/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs +++ b/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs @@ -22,18 +22,18 @@ namespace Umbraco.Web.Mvc public class EnsurePublishedContentRequestAttribute : ActionFilterAttribute { private readonly string _dataTokenName; - private UmbracoContext _umbracoContext; + private IUmbracoContextAccessor _umbracoContextAccessor; private readonly int? _contentId; private UmbracoHelper _helper; /// /// Constructor - can be used for testing /// - /// + /// /// - public EnsurePublishedContentRequestAttribute(UmbracoContext umbracoContext, int contentId) + public EnsurePublishedContentRequestAttribute(IUmbracoContextAccessor umbracoContextAccessor, int contentId) { - _umbracoContext = umbracoContext ?? throw new ArgumentNullException(nameof(umbracoContext)); + _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _contentId = contentId; } @@ -58,18 +58,18 @@ namespace Umbraco.Web.Mvc /// /// Constructor - can be used for testing /// - /// + /// /// - public EnsurePublishedContentRequestAttribute(UmbracoContext umbracoContext, string dataTokenName) + public EnsurePublishedContentRequestAttribute(IUmbracoContextAccessor umbracoContextAccessor, string dataTokenName) { - _umbracoContext = umbracoContext ?? throw new ArgumentNullException(nameof(umbracoContext)); + _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _dataTokenName = dataTokenName; } /// /// Exposes the UmbracoContext /// - protected UmbracoContext UmbracoContext => _umbracoContext ?? (_umbracoContext = UmbracoContext.Current); + protected UmbracoContext UmbracoContext => _umbracoContextAccessor.UmbracoContext ?? UmbracoContext.Current; // TODO: try lazy property injection? private IPublishedRouter PublishedRouter => Core.Composing.Current.Factory.GetInstance(); diff --git a/src/Umbraco.Web/Mvc/PluginController.cs b/src/Umbraco.Web/Mvc/PluginController.cs index 8f113dc0a4..43c8bb5479 100644 --- a/src/Umbraco.Web/Mvc/PluginController.cs +++ b/src/Umbraco.Web/Mvc/PluginController.cs @@ -31,12 +31,17 @@ namespace Umbraco.Web.Mvc // what can go wrong? /// - /// Gets or sets the Umbraco context. + /// Gets the Umbraco context. /// - public virtual UmbracoContext UmbracoContext { get; } + public virtual UmbracoContext UmbracoContext => UmbracoContextAccessor.UmbracoContext; /// - /// Gets or sets the database context. + /// Gets the database context accessor. + /// + public virtual IUmbracoContextAccessor UmbracoContextAccessor { get; } + + /// + /// Gets the database context. /// public IUmbracoDatabaseFactory DatabaseFactory { get; } @@ -77,7 +82,7 @@ namespace Umbraco.Web.Mvc protected PluginController() : this( - Current.Factory.GetInstance(), + Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), @@ -88,9 +93,9 @@ namespace Umbraco.Web.Mvc { } - protected PluginController(UmbracoContext umbracoContext, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + protected PluginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) { - UmbracoContext = umbracoContext; + UmbracoContextAccessor = umbracoContextAccessor; DatabaseFactory = databaseFactory; Services = services; AppCaches = appCaches; diff --git a/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs b/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs index 8dd9dafec0..5fc8d5a0b0 100644 --- a/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs +++ b/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs @@ -6,6 +6,7 @@ using System.Web.Mvc; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Web.Composing; namespace Umbraco.Web.Mvc { @@ -17,7 +18,7 @@ namespace Umbraco.Web.Mvc private IPublishedContent _publishedContent; private readonly int _pageId; private NameValueCollection _queryStringValues; - private readonly UmbracoContext _umbracoContext; + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private string _url; public string Url @@ -31,7 +32,7 @@ namespace Umbraco.Web.Mvc throw new InvalidOperationException(string.Format("Cannot redirect, no entity was found for id {0}", _pageId)); } - var result = _umbracoContext.UrlProvider.GetUrl(PublishedContent.Id); + var result = _umbracoContextAccessor.UmbracoContext.UrlProvider.GetUrl(PublishedContent.Id); if (result != "#") { _url = result; @@ -66,7 +67,7 @@ namespace Umbraco.Web.Mvc /// /// public RedirectToUmbracoPageResult(int pageId) - : this(pageId, UmbracoContext.Current) + : this(pageId, Current.UmbracoContextAccessor) { } @@ -76,7 +77,7 @@ namespace Umbraco.Web.Mvc /// /// public RedirectToUmbracoPageResult(int pageId, NameValueCollection queryStringValues) - : this(pageId, queryStringValues, UmbracoContext.Current) + : this(pageId, queryStringValues, Current.UmbracoContextAccessor) { } @@ -86,7 +87,7 @@ namespace Umbraco.Web.Mvc /// /// public RedirectToUmbracoPageResult(int pageId, string queryString) - : this(pageId, queryString, UmbracoContext.Current) + : this(pageId, queryString, Current.UmbracoContextAccessor) { } @@ -95,7 +96,7 @@ namespace Umbraco.Web.Mvc /// /// public RedirectToUmbracoPageResult(IPublishedContent publishedContent) - : this(publishedContent, UmbracoContext.Current) + : this(publishedContent, Current.UmbracoContextAccessor) { } @@ -105,7 +106,7 @@ namespace Umbraco.Web.Mvc /// /// public RedirectToUmbracoPageResult(IPublishedContent publishedContent, NameValueCollection queryStringValues) - : this(publishedContent, queryStringValues, UmbracoContext.Current) + : this(publishedContent, queryStringValues, Current.UmbracoContextAccessor) { } @@ -115,7 +116,7 @@ namespace Umbraco.Web.Mvc /// /// public RedirectToUmbracoPageResult(IPublishedContent publishedContent, string queryString) - : this(publishedContent, queryString, UmbracoContext.Current) + : this(publishedContent, queryString, Current.UmbracoContextAccessor) { } @@ -124,10 +125,10 @@ namespace Umbraco.Web.Mvc /// /// /// - public RedirectToUmbracoPageResult(int pageId, UmbracoContext umbracoContext) + public RedirectToUmbracoPageResult(int pageId, IUmbracoContextAccessor umbracoContextAccessor) { _pageId = pageId; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } /// @@ -136,11 +137,11 @@ namespace Umbraco.Web.Mvc /// /// /// - public RedirectToUmbracoPageResult(int pageId, NameValueCollection queryStringValues, UmbracoContext umbracoContext) + public RedirectToUmbracoPageResult(int pageId, NameValueCollection queryStringValues, IUmbracoContextAccessor umbracoContextAccessor) { _pageId = pageId; _queryStringValues = queryStringValues; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } /// @@ -149,11 +150,11 @@ namespace Umbraco.Web.Mvc /// /// /// - public RedirectToUmbracoPageResult(int pageId, string queryString, UmbracoContext umbracoContext) + public RedirectToUmbracoPageResult(int pageId, string queryString, IUmbracoContextAccessor umbracoContextAccessor) { _pageId = pageId; _queryStringValues = ParseQueryString(queryString); - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } /// @@ -161,11 +162,11 @@ namespace Umbraco.Web.Mvc /// /// /// - public RedirectToUmbracoPageResult(IPublishedContent publishedContent, UmbracoContext umbracoContext) + public RedirectToUmbracoPageResult(IPublishedContent publishedContent, IUmbracoContextAccessor umbracoContextAccessor) { _publishedContent = publishedContent; _pageId = publishedContent.Id; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } /// @@ -174,12 +175,12 @@ namespace Umbraco.Web.Mvc /// /// /// - public RedirectToUmbracoPageResult(IPublishedContent publishedContent, NameValueCollection queryStringValues, UmbracoContext umbracoContext) + public RedirectToUmbracoPageResult(IPublishedContent publishedContent, NameValueCollection queryStringValues, IUmbracoContextAccessor umbracoContextAccessor) { _publishedContent = publishedContent; _pageId = publishedContent.Id; _queryStringValues = queryStringValues; - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } /// @@ -188,12 +189,12 @@ namespace Umbraco.Web.Mvc /// /// /// - public RedirectToUmbracoPageResult(IPublishedContent publishedContent, string queryString, UmbracoContext umbracoContext) + public RedirectToUmbracoPageResult(IPublishedContent publishedContent, string queryString, IUmbracoContextAccessor umbracoContextAccessor) { _publishedContent = publishedContent; _pageId = publishedContent.Id; _queryStringValues = ParseQueryString(queryString); - _umbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } public override void ExecuteResult(ControllerContext context) diff --git a/src/Umbraco.Web/Mvc/RenderMvcController.cs b/src/Umbraco.Web/Mvc/RenderMvcController.cs index e67aa3948e..6c82f2c01c 100644 --- a/src/Umbraco.Web/Mvc/RenderMvcController.cs +++ b/src/Umbraco.Web/Mvc/RenderMvcController.cs @@ -23,8 +23,8 @@ namespace Umbraco.Web.Mvc ActionInvoker = new RenderActionInvoker(); } - public RenderMvcController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, services, appCaches, profilingLogger, umbracoHelper) + public RenderMvcController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, umbracoHelper) { ActionInvoker = new RenderActionInvoker(); } diff --git a/src/Umbraco.Web/Mvc/SurfaceController.cs b/src/Umbraco.Web/Mvc/SurfaceController.cs index 05c095940c..4fc53de4ae 100644 --- a/src/Umbraco.Web/Mvc/SurfaceController.cs +++ b/src/Umbraco.Web/Mvc/SurfaceController.cs @@ -6,6 +6,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Persistence; using Umbraco.Core.Services; +using Umbraco.Web.Composing; namespace Umbraco.Web.Mvc { @@ -19,8 +20,8 @@ namespace Umbraco.Web.Mvc protected SurfaceController() { } - protected SurfaceController(UmbracoContext umbracoContext, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) - : base(umbracoContext, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) + protected SurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper) { } /// @@ -30,7 +31,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToUmbracoPage(int pageId) { - return new RedirectToUmbracoPageResult(pageId, UmbracoContext); + return new RedirectToUmbracoPageResult(pageId, Current.UmbracoContextAccessor); } /// @@ -41,7 +42,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToUmbracoPage(int pageId, NameValueCollection queryStringValues) { - return new RedirectToUmbracoPageResult(pageId, queryStringValues, UmbracoContext); + return new RedirectToUmbracoPageResult(pageId, queryStringValues, Current.UmbracoContextAccessor); } /// @@ -52,7 +53,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToUmbracoPage(int pageId, string queryString) { - return new RedirectToUmbracoPageResult(pageId, queryString, UmbracoContext); + return new RedirectToUmbracoPageResult(pageId, queryString, Current.UmbracoContextAccessor); } /// @@ -62,7 +63,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToUmbracoPage(IPublishedContent publishedContent) { - return new RedirectToUmbracoPageResult(publishedContent, UmbracoContext); + return new RedirectToUmbracoPageResult(publishedContent, Current.UmbracoContextAccessor); } /// @@ -73,7 +74,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToUmbracoPage(IPublishedContent publishedContent, NameValueCollection queryStringValues) { - return new RedirectToUmbracoPageResult(publishedContent, queryStringValues, UmbracoContext); + return new RedirectToUmbracoPageResult(publishedContent, queryStringValues, Current.UmbracoContextAccessor); } /// @@ -84,7 +85,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToUmbracoPage(IPublishedContent publishedContent, string queryString) { - return new RedirectToUmbracoPageResult(publishedContent, queryString, UmbracoContext); + return new RedirectToUmbracoPageResult(publishedContent, queryString, Current.UmbracoContextAccessor); } /// @@ -93,7 +94,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToCurrentUmbracoPage() { - return new RedirectToUmbracoPageResult(CurrentPage, UmbracoContext); + return new RedirectToUmbracoPageResult(CurrentPage, Current.UmbracoContextAccessor); } /// @@ -103,7 +104,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToCurrentUmbracoPage(NameValueCollection queryStringValues) { - return new RedirectToUmbracoPageResult(CurrentPage, queryStringValues, UmbracoContext); + return new RedirectToUmbracoPageResult(CurrentPage, queryStringValues, Current.UmbracoContextAccessor); } /// @@ -113,7 +114,7 @@ namespace Umbraco.Web.Mvc /// protected RedirectToUmbracoPageResult RedirectToCurrentUmbracoPage(string queryString) { - return new RedirectToUmbracoPageResult(CurrentPage, queryString, UmbracoContext); + return new RedirectToUmbracoPageResult(CurrentPage, queryString, Current.UmbracoContextAccessor); } /// diff --git a/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs b/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs index ae97f22dbe..ebdd83cf20 100644 --- a/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs +++ b/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs @@ -21,8 +21,8 @@ namespace Umbraco.Web.Mvc { } - protected UmbracoAuthorizedController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, services, appCaches, profilingLogger, umbracoHelper) + protected UmbracoAuthorizedController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, umbracoHelper) { } } diff --git a/src/Umbraco.Web/Mvc/UmbracoController.cs b/src/Umbraco.Web/Mvc/UmbracoController.cs index 79987ab6b4..c9155c421b 100644 --- a/src/Umbraco.Web/Mvc/UmbracoController.cs +++ b/src/Umbraco.Web/Mvc/UmbracoController.cs @@ -23,27 +23,32 @@ namespace Umbraco.Web.Mvc /// /// Gets or sets the Umbraco context. /// - public IGlobalSettings GlobalSettings { get; set; } + public IGlobalSettings GlobalSettings { get; } /// - /// Gets or sets the Umbraco context. + /// Gets the Umbraco context. /// - public virtual UmbracoContext UmbracoContext { get; set; } + public virtual UmbracoContext UmbracoContext => UmbracoContextAccessor.UmbracoContext; + + /// + /// Gets or sets the Umbraco context accessor. + /// + public virtual IUmbracoContextAccessor UmbracoContextAccessor { get; set; } /// /// Gets or sets the services context. /// - public ServiceContext Services { get; set; } + public ServiceContext Services { get; } /// /// Gets or sets the application cache. /// - public AppCaches AppCaches { get; set; } + public AppCaches AppCaches { get; } /// /// Gets or sets the logger. /// - public ILogger Logger { get; set; } + public ILogger Logger { get; } /// /// Gets or sets the profiling logger. @@ -70,7 +75,7 @@ namespace Umbraco.Web.Mvc protected UmbracoController() : this( Current.Factory.GetInstance(), - Current.Factory.GetInstance(), + Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), @@ -79,10 +84,10 @@ namespace Umbraco.Web.Mvc { } - protected UmbracoController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) + protected UmbracoController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper) { GlobalSettings = globalSettings; - UmbracoContext = umbracoContext; + UmbracoContextAccessor = umbracoContextAccessor; Services = services; AppCaches = appCaches; Logger = profilingLogger; diff --git a/src/Umbraco.Web/Trees/ApplicationTreeController.cs b/src/Umbraco.Web/Trees/ApplicationTreeController.cs index b8fe709738..007fd53e60 100644 --- a/src/Umbraco.Web/Trees/ApplicationTreeController.cs +++ b/src/Umbraco.Web/Trees/ApplicationTreeController.cs @@ -34,10 +34,10 @@ namespace Umbraco.Web.Trees private readonly ITreeService _treeService; private readonly ISectionService _sectionService; - public ApplicationTreeController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, + public ApplicationTreeController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, ITreeService treeService, ISectionService sectionService, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _treeService = treeService; _sectionService = sectionService; @@ -72,7 +72,7 @@ namespace Umbraco.Web.Trees //full screen section without trees var name = Services.TextService.Localize("sections/" + application); return TreeRootNode.CreateSingleTreeRoot(Constants.System.Root.ToInvariantString(), null, null, name, TreeNodeCollection.Empty, true); - } + } // handle request for a specific tree / or when there is only one tree if (!tree.IsNullOrWhiteSpace() || allTrees.Count == 1) diff --git a/src/Umbraco.Web/Trees/TreeController.cs b/src/Umbraco.Web/Trees/TreeController.cs index be0b862988..be862a8390 100644 --- a/src/Umbraco.Web/Trees/TreeController.cs +++ b/src/Umbraco.Web/Trees/TreeController.cs @@ -18,8 +18,8 @@ namespace Umbraco.Web.Trees private readonly TreeAttribute _treeAttribute; - protected TreeController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) - : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected TreeController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _treeAttribute = GetTreeAttribute(); } diff --git a/src/Umbraco.Web/Trees/TreeControllerBase.cs b/src/Umbraco.Web/Trees/TreeControllerBase.cs index f7c2b2460e..4e43e6c093 100644 --- a/src/Umbraco.Web/Trees/TreeControllerBase.cs +++ b/src/Umbraco.Web/Trees/TreeControllerBase.cs @@ -31,7 +31,8 @@ namespace Umbraco.Web.Trees { } - protected TreeControllerBase(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected TreeControllerBase(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } diff --git a/src/Umbraco.Web/UmbracoAuthorizedHttpHandler.cs b/src/Umbraco.Web/UmbracoAuthorizedHttpHandler.cs index b18ba55799..394c25dc6f 100644 --- a/src/Umbraco.Web/UmbracoAuthorizedHttpHandler.cs +++ b/src/Umbraco.Web/UmbracoAuthorizedHttpHandler.cs @@ -15,7 +15,7 @@ namespace Umbraco.Web { } - protected UmbracoAuthorizedHttpHandler(UmbracoContext umbracoContext, UmbracoHelper umbracoHelper, ServiceContext service, IProfilingLogger plogger) : base(umbracoContext, umbracoHelper, service, plogger) + protected UmbracoAuthorizedHttpHandler(IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper umbracoHelper, ServiceContext service, IProfilingLogger plogger) : base(umbracoContextAccessor, umbracoHelper, service, plogger) { } @@ -26,7 +26,7 @@ namespace Umbraco.Web /// protected bool ValidateUserContextId(string currentUmbracoUserContextId) { - return UmbracoContext.Security.ValidateCurrentUser(); + return Security.ValidateCurrentUser(); } /// @@ -37,7 +37,7 @@ namespace Umbraco.Web /// protected bool ValidateCredentials(string username, string password) { - return UmbracoContext.Security.ValidateBackOfficeCredentials(username, password); + return Security.ValidateBackOfficeCredentials(username, password); } /// diff --git a/src/Umbraco.Web/UmbracoHttpHandler.cs b/src/Umbraco.Web/UmbracoHttpHandler.cs index eca3fc303e..447bdde430 100644 --- a/src/Umbraco.Web/UmbracoHttpHandler.cs +++ b/src/Umbraco.Web/UmbracoHttpHandler.cs @@ -14,12 +14,12 @@ namespace Umbraco.Web private UrlHelper _url; protected UmbracoHttpHandler() - : this(Current.UmbracoContext, Current.UmbracoHelper, Current.Services, Current.ProfilingLogger) + : this(Current.UmbracoContextAccessor, Current.UmbracoHelper, Current.Services, Current.ProfilingLogger) { } - protected UmbracoHttpHandler(UmbracoContext umbracoContext, UmbracoHelper umbracoHelper, ServiceContext service, IProfilingLogger plogger) + protected UmbracoHttpHandler(IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper umbracoHelper, ServiceContext service, IProfilingLogger plogger) { - UmbracoContext = umbracoContext; + UmbracoContextAccessor = umbracoContextAccessor; Logger = plogger; ProfilingLogger = plogger; Services = service; @@ -41,9 +41,9 @@ namespace Umbraco.Web public IProfilingLogger ProfilingLogger { get; } /// - /// Gets the Umbraco context. + /// Gets the Umbraco context accessor. /// - public UmbracoContext UmbracoContext { get; } + public IUmbracoContextAccessor UmbracoContextAccessor { get; } /// /// Gets the Umbraco helper. @@ -58,7 +58,7 @@ namespace Umbraco.Web /// /// Gets the web security helper. /// - public WebSecurity Security => UmbracoContext.Security; + public WebSecurity Security => UmbracoContextAccessor.UmbracoContext.Security; /// /// Gets the Url helper. diff --git a/src/Umbraco.Web/WebApi/UmbracoApiController.cs b/src/Umbraco.Web/WebApi/UmbracoApiController.cs index 2091d47202..8a2e54ca02 100644 --- a/src/Umbraco.Web/WebApi/UmbracoApiController.cs +++ b/src/Umbraco.Web/WebApi/UmbracoApiController.cs @@ -17,7 +17,8 @@ namespace Umbraco.Web.WebApi { } - protected UmbracoApiController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected UmbracoApiController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { } } diff --git a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs index c6ac35267d..16ca2e5642 100644 --- a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs +++ b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs @@ -33,7 +33,7 @@ namespace Umbraco.Web.WebApi protected UmbracoApiControllerBase() : this( Current.Factory.GetInstance(), - Current.Factory.GetInstance().UmbracoContext, + Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), @@ -46,15 +46,15 @@ namespace Umbraco.Web.WebApi /// /// Initializes a new instance of the class with all its dependencies. /// - protected UmbracoApiControllerBase(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + protected UmbracoApiControllerBase(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) { + UmbracoContextAccessor = umbracoContextAccessor; GlobalSettings = globalSettings; SqlContext = sqlContext; Services = services; AppCaches = appCaches; Logger = logger; RuntimeState = runtimeState; - UmbracoContext = umbracoContext; Umbraco = umbracoHelper; } @@ -72,8 +72,14 @@ namespace Umbraco.Web.WebApi /// /// Gets the Umbraco context. /// - public virtual UmbracoContext UmbracoContext { get; } - + public virtual UmbracoContext UmbracoContext => UmbracoContextAccessor.UmbracoContext; + + /// + /// Gets the Umbraco context accessor. + /// + public virtual IUmbracoContextAccessor UmbracoContextAccessor { get; } + + /// /// Gets the sql context. /// @@ -113,7 +119,7 @@ namespace Umbraco.Web.WebApi /// Gets the Umbraco helper. /// public UmbracoHelper Umbraco { get; } - + /// /// Gets the web security helper. /// diff --git a/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs b/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs index e188fb4fef..97af5e768f 100644 --- a/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs +++ b/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs @@ -34,7 +34,8 @@ namespace Umbraco.Web.WebApi { } - protected UmbracoAuthorizedApiController(IGlobalSettings globalSettings, UmbracoContext umbracoContext, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContext, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) + protected UmbracoAuthorizedApiController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { }