diff --git a/src/Umbraco.Web/Install/UmbracoInstallAuthorizeAttribute.cs b/src/Umbraco.Web/Install/UmbracoInstallAuthorizeAttribute.cs index 994703bfd3..3aafa86de3 100644 --- a/src/Umbraco.Web/Install/UmbracoInstallAuthorizeAttribute.cs +++ b/src/Umbraco.Web/Install/UmbracoInstallAuthorizeAttribute.cs @@ -13,9 +13,23 @@ namespace Umbraco.Web.Install /// internal class UmbracoInstallAuthorizeAttribute : AuthorizeAttribute { - private readonly ApplicationContext _applicationContext; + private readonly ApplicationContext _applicationContext; private readonly UmbracoContext _umbracoContext; + private ApplicationContext GetApplicationContext() + { + return _applicationContext ?? ApplicationContext.Current; + } + + private UmbracoContext GetUmbracoContext() + { + return _umbracoContext ?? UmbracoContext.Current; + } + + /// + /// THIS SHOULD BE ONLY USED FOR UNIT TESTS + /// + /// public UmbracoInstallAuthorizeAttribute(UmbracoContext umbracoContext) { if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); @@ -23,11 +37,9 @@ namespace Umbraco.Web.Install _applicationContext = _umbracoContext.Application; } - public UmbracoInstallAuthorizeAttribute() - : this(UmbracoContext.Current) - { - - } + public UmbracoInstallAuthorizeAttribute() + { + } /// /// Ensures that the user must be logged in or that the application is not configured just yet. @@ -41,13 +53,13 @@ namespace Umbraco.Web.Install try { //if its not configured then we can continue - if (!_applicationContext.IsConfigured) + if (!GetApplicationContext().IsConfigured) { return true; } - + var umbCtx = GetUmbracoContext(); //otherwise we need to ensure that a user is logged in - var isLoggedIn = _umbracoContext.Security.ValidateUserContextId(_umbracoContext.Security.UmbracoUserContextId); + var isLoggedIn = umbCtx.Security.ValidateUserContextId(umbCtx.Security.UmbracoUserContextId); if (isLoggedIn) { return true; diff --git a/src/Umbraco.Web/Mvc/MemberAuthorizeAttribute.cs b/src/Umbraco.Web/Mvc/MemberAuthorizeAttribute.cs index bdcbd275ba..dd9720cdcf 100644 --- a/src/Umbraco.Web/Mvc/MemberAuthorizeAttribute.cs +++ b/src/Umbraco.Web/Mvc/MemberAuthorizeAttribute.cs @@ -18,18 +18,24 @@ namespace Umbraco.Web.Mvc public sealed class MemberAuthorizeAttribute : AuthorizeAttribute { - private readonly ApplicationContext _applicationContext; private readonly UmbracoContext _umbracoContext; + private UmbracoContext GetUmbracoContext() + { + return _umbracoContext ?? UmbracoContext.Current; + } + + /// + /// THIS SHOULD BE ONLY USED FOR UNIT TESTS + /// + /// public MemberAuthorizeAttribute(UmbracoContext umbracoContext) { if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); _umbracoContext = umbracoContext; - _applicationContext = _umbracoContext.Application; } public MemberAuthorizeAttribute() - : this(UmbracoContext.Current) { } @@ -76,7 +82,7 @@ namespace Umbraco.Web.Mvc } } - return _umbracoContext.Security.IsMemberAuthorized(AllowAll, + return GetUmbracoContext().Security.IsMemberAuthorized(AllowAll, AllowType.Split(','), AllowGroup.Split(','), members); diff --git a/src/Umbraco.Web/Mvc/UmbracoAuthorizeAttribute.cs b/src/Umbraco.Web/Mvc/UmbracoAuthorizeAttribute.cs index 19615706d6..ff7056838b 100644 --- a/src/Umbraco.Web/Mvc/UmbracoAuthorizeAttribute.cs +++ b/src/Umbraco.Web/Mvc/UmbracoAuthorizeAttribute.cs @@ -15,6 +15,20 @@ namespace Umbraco.Web.Mvc private readonly ApplicationContext _applicationContext; private readonly UmbracoContext _umbracoContext; + private ApplicationContext GetApplicationContext() + { + return _applicationContext ?? ApplicationContext.Current; + } + + private UmbracoContext GetUmbracoContext() + { + return _umbracoContext ?? UmbracoContext.Current; + } + + /// + /// THIS SHOULD BE ONLY USED FOR UNIT TESTS + /// + /// public UmbracoAuthorizeAttribute(UmbracoContext umbracoContext) { if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); @@ -22,11 +36,9 @@ namespace Umbraco.Web.Mvc _applicationContext = _umbracoContext.Application; } - public UmbracoAuthorizeAttribute() - : this(UmbracoContext.Current) - { - - } + public UmbracoAuthorizeAttribute() + { + } /// /// Ensures that the user must be in the Administrator or the Install role @@ -40,9 +52,10 @@ namespace Umbraco.Web.Mvc try { //we need to that the app is configured and that a user is logged in - if (!_applicationContext.IsConfigured) + if (!GetApplicationContext().IsConfigured) return false; - var isLoggedIn = _umbracoContext.Security.ValidateUserContextId(_umbracoContext.Security.UmbracoUserContextId); + var umbCtx = GetUmbracoContext(); + var isLoggedIn = umbCtx.Security.ValidateUserContextId(umbCtx.Security.UmbracoUserContextId); return isLoggedIn; } catch (Exception) diff --git a/src/Umbraco.Web/WebApi/MemberAuthorizeAttribute.cs b/src/Umbraco.Web/WebApi/MemberAuthorizeAttribute.cs index bb15fe7c47..0fc04a6206 100644 --- a/src/Umbraco.Web/WebApi/MemberAuthorizeAttribute.cs +++ b/src/Umbraco.Web/WebApi/MemberAuthorizeAttribute.cs @@ -16,21 +16,27 @@ namespace Umbraco.Web.WebApi public sealed class MemberAuthorizeAttribute : AuthorizeAttribute { - private readonly ApplicationContext _applicationContext; private readonly UmbracoContext _umbracoContext; + private UmbracoContext GetUmbracoContext() + { + return _umbracoContext ?? UmbracoContext.Current; + } + + /// + /// THIS SHOULD BE ONLY USED FOR UNIT TESTS + /// + /// public MemberAuthorizeAttribute(UmbracoContext umbracoContext) { if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); _umbracoContext = umbracoContext; - _applicationContext = _umbracoContext.Application; } public MemberAuthorizeAttribute() - : this(UmbracoContext.Current) - { + { - } + } /// /// Flag for whether to allow all site visitors or just authenticated members @@ -74,7 +80,7 @@ namespace Umbraco.Web.WebApi } } - return _umbracoContext.Security.IsMemberAuthorized(AllowAll, + return GetUmbracoContext().Security.IsMemberAuthorized(AllowAll, AllowType.Split(','), AllowGroup.Split(','), members); diff --git a/src/Umbraco.Web/WebApi/UmbracoAuthorizeAttribute.cs b/src/Umbraco.Web/WebApi/UmbracoAuthorizeAttribute.cs index dc83b043df..7fee8c34e4 100644 --- a/src/Umbraco.Web/WebApi/UmbracoAuthorizeAttribute.cs +++ b/src/Umbraco.Web/WebApi/UmbracoAuthorizeAttribute.cs @@ -13,6 +13,20 @@ namespace Umbraco.Web.WebApi private readonly ApplicationContext _applicationContext; private readonly UmbracoContext _umbracoContext; + private ApplicationContext GetApplicationContext() + { + return _applicationContext ?? ApplicationContext.Current; + } + + private UmbracoContext GetUmbracoContext() + { + return _umbracoContext ?? UmbracoContext.Current; + } + + /// + /// THIS SHOULD BE ONLY USED FOR UNIT TESTS + /// + /// public UmbracoAuthorizeAttribute(UmbracoContext umbracoContext) { if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); @@ -21,9 +35,7 @@ namespace Umbraco.Web.WebApi } public UmbracoAuthorizeAttribute() - : this(UmbracoContext.Current) { - } protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext) @@ -31,9 +43,10 @@ namespace Umbraco.Web.WebApi try { //we need to that the app is configured and that a user is logged in - if (!_applicationContext.IsConfigured) + if (!GetApplicationContext().IsConfigured) return false; - var isLoggedIn = _umbracoContext.Security.ValidateUserContextId(_umbracoContext.Security.UmbracoUserContextId); + var umbCtx = GetUmbracoContext(); + var isLoggedIn = umbCtx.Security.ValidateUserContextId(umbCtx.Security.UmbracoUserContextId); return isLoggedIn; } catch (Exception)