Merge branch 'netcore/feature/move-more-install-stuff' into netcore/feature/executable-backoffice
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Configuration;
|
||||
using Umbraco.Configuration;
|
||||
using Umbraco.Core.Configuration.HealthChecks;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Core.IO;
|
||||
@@ -10,6 +11,7 @@ namespace Umbraco.Core.Configuration
|
||||
public IHostingSettings HostingSettings { get; } = new HostingSettings();
|
||||
|
||||
public ICoreDebug CoreDebug { get; } = new CoreDebug();
|
||||
public IMachineKeyConfig MachineKeyConfig { get; } = new MachineKeyConfig();
|
||||
|
||||
public IUmbracoSettingsSection UmbracoSettings { get; }
|
||||
|
||||
@@ -27,6 +29,7 @@ namespace Umbraco.Core.Configuration
|
||||
configs.AddPasswordConfigurations();
|
||||
|
||||
configs.Add(() => CoreDebug);
|
||||
configs.Add(() => MachineKeyConfig);
|
||||
configs.Add<IConnectionStrings>(() => new ConnectionStrings(ioHelper));
|
||||
configs.AddCoreConfigs(ioHelper);
|
||||
return configs;
|
||||
|
||||
20
src/Umbraco.Configuration/MachineKeyConfig.cs
Normal file
20
src/Umbraco.Configuration/MachineKeyConfig.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System.Configuration;
|
||||
using Umbraco.Core.Configuration;
|
||||
|
||||
namespace Umbraco.Configuration
|
||||
{
|
||||
public class MachineKeyConfig : IMachineKeyConfig
|
||||
{
|
||||
//TODO all the machineKey stuff should be replaced: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/replacing-machinekey?view=aspnetcore-3.1
|
||||
|
||||
public bool HasMachineKey
|
||||
{
|
||||
get
|
||||
{
|
||||
var machineKeySection =
|
||||
ConfigurationManager.GetSection("system.web/machineKey") as ConfigurationSection;
|
||||
return !(machineKeySection?.ElementInformation?.Source is null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
src/Umbraco.Core/Configuration/IMachineKeyConfig.cs
Normal file
7
src/Umbraco.Core/Configuration/IMachineKeyConfig.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Umbraco.Core.Configuration
|
||||
{
|
||||
public interface IMachineKeyConfig
|
||||
{
|
||||
bool HasMachineKey { get;}
|
||||
}
|
||||
}
|
||||
7
src/Umbraco.Core/Net/IUmbracoApplicationLifetime.cs
Normal file
7
src/Umbraco.Core/Net/IUmbracoApplicationLifetime.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Umbraco.Net
|
||||
{
|
||||
public interface IUmbracoApplicationLifetime
|
||||
{
|
||||
void Restart();
|
||||
}
|
||||
}
|
||||
7
src/Umbraco.Core/Net/IUserAgentProvider.cs
Normal file
7
src/Umbraco.Core/Net/IUserAgentProvider.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Umbraco.Net
|
||||
{
|
||||
public interface IUserAgentProvider
|
||||
{
|
||||
string GetUserAgent();
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ namespace Umbraco.Core.Models.Packaging
|
||||
/// <remarks>
|
||||
/// This is used only for conversions and will not 'get' a PackageDefinition from the repository with a valid ID
|
||||
/// </remarks>
|
||||
internal static PackageDefinition FromCompiledPackage(CompiledPackage compiled)
|
||||
public static PackageDefinition FromCompiledPackage(CompiledPackage compiled)
|
||||
{
|
||||
return new PackageDefinition
|
||||
{
|
||||
|
||||
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Cookie;
|
||||
@@ -12,8 +11,9 @@ using Umbraco.Core.Migrations.Install;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Serialization;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Web.Composing;
|
||||
using Umbraco.Net;
|
||||
using Umbraco.Web.Install.Models;
|
||||
|
||||
namespace Umbraco.Web.Install
|
||||
@@ -22,25 +22,28 @@ namespace Umbraco.Web.Install
|
||||
{
|
||||
private static HttpClient _httpClient;
|
||||
private readonly DatabaseBuilder _databaseBuilder;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly ILogger _logger;
|
||||
private readonly IGlobalSettings _globalSettings;
|
||||
private readonly IUmbracoVersion _umbracoVersion;
|
||||
private readonly IConnectionStrings _connectionStrings;
|
||||
private readonly IInstallationService _installationService;
|
||||
private readonly ICookieManager _cookieManager;
|
||||
private readonly IUserAgentProvider _userAgentProvider;
|
||||
private readonly Lazy<ISqlContext> _sqlContext;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private InstallationType? _installationType;
|
||||
|
||||
public InstallHelper(IHttpContextAccessor httpContextAccessor,
|
||||
DatabaseBuilder databaseBuilder,
|
||||
public InstallHelper(DatabaseBuilder databaseBuilder,
|
||||
ILogger logger,
|
||||
IGlobalSettings globalSettings,
|
||||
IUmbracoVersion umbracoVersion,
|
||||
IConnectionStrings connectionStrings,
|
||||
IInstallationService installationService,
|
||||
ICookieManager cookieManager)
|
||||
ICookieManager cookieManager,
|
||||
IUserAgentProvider userAgentProvider,
|
||||
Lazy<ISqlContext> sqlContext,
|
||||
IJsonSerializer jsonSerializer)
|
||||
{
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_logger = logger;
|
||||
_globalSettings = globalSettings;
|
||||
_umbracoVersion = umbracoVersion;
|
||||
@@ -48,6 +51,9 @@ namespace Umbraco.Web.Install
|
||||
_connectionStrings = connectionStrings ?? throw new ArgumentNullException(nameof(connectionStrings));
|
||||
_installationService = installationService;
|
||||
_cookieManager = cookieManager;
|
||||
_userAgentProvider = userAgentProvider;
|
||||
_sqlContext = sqlContext;
|
||||
_jsonSerializer = jsonSerializer;
|
||||
}
|
||||
|
||||
public InstallationType GetInstallationType()
|
||||
@@ -57,11 +63,9 @@ namespace Umbraco.Web.Install
|
||||
|
||||
public async Task InstallStatus(bool isCompleted, string errorMsg)
|
||||
{
|
||||
|
||||
var httpContext = _httpContextAccessor.GetRequiredHttpContext();
|
||||
try
|
||||
{
|
||||
var userAgent = httpContext.Request.UserAgent;
|
||||
var userAgent = _userAgentProvider.GetUserAgent();
|
||||
|
||||
// Check for current install Id
|
||||
var installId = Guid.NewGuid();
|
||||
@@ -88,7 +92,7 @@ namespace Umbraco.Web.Install
|
||||
{
|
||||
// we don't have DatabaseProvider anymore... doing it differently
|
||||
//dbProvider = ApplicationContext.Current.DatabaseContext.DatabaseProvider.ToString();
|
||||
dbProvider = GetDbProviderString(Current.SqlContext);
|
||||
dbProvider = GetDbProviderString(_sqlContext.Value);
|
||||
}
|
||||
|
||||
var installLog = new InstallLog(installId: installId, isUpgrade: IsBrandNewInstall == false,
|
||||
@@ -107,19 +111,7 @@ namespace Umbraco.Web.Install
|
||||
|
||||
internal static string GetDbProviderString(ISqlContext sqlContext)
|
||||
{
|
||||
var dbProvider = string.Empty;
|
||||
|
||||
// we don't have DatabaseProvider anymore...
|
||||
//dbProvider = ApplicationContext.Current.DatabaseContext.DatabaseProvider.ToString();
|
||||
//
|
||||
// doing it differently
|
||||
var syntax = sqlContext.SqlSyntax;
|
||||
if (syntax is SqlCeSyntaxProvider)
|
||||
dbProvider = "SqlServerCE";
|
||||
else if (syntax is SqlServerSyntaxProvider)
|
||||
dbProvider = (syntax as SqlServerSyntaxProvider).ServerVersion.IsAzure ? "SqlAzure" : "SqlServer";
|
||||
|
||||
return dbProvider;
|
||||
return sqlContext.SqlSyntax.DbProvider;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -162,7 +154,10 @@ namespace Umbraco.Web.Install
|
||||
using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri))
|
||||
{
|
||||
var response = _httpClient.SendAsync(request).Result;
|
||||
packages = response.Content.ReadAsAsync<IEnumerable<Package>>().Result.ToList();
|
||||
|
||||
|
||||
var json = response.Content.ReadAsStringAsync().Result;
|
||||
packages = _jsonSerializer.Deserialize<IEnumerable<Package>>(json).ToList();
|
||||
}
|
||||
}
|
||||
catch (AggregateException ex)
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Configuration;
|
||||
using System.Xml.Linq;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Security;
|
||||
using Umbraco.Web.Install.Models;
|
||||
@@ -12,13 +12,15 @@ namespace Umbraco.Web.Install.InstallSteps
|
||||
"ConfigureMachineKey", "machinekey", 2,
|
||||
"Updating some security settings...",
|
||||
PerformsAppRestart = true)]
|
||||
internal class ConfigureMachineKey : InstallSetupStep<bool?>
|
||||
public class ConfigureMachineKey : InstallSetupStep<bool?>
|
||||
{
|
||||
private readonly IIOHelper _ioHelper;
|
||||
private readonly IMachineKeyConfig _machineKeyConfig;
|
||||
|
||||
public ConfigureMachineKey(IIOHelper ioHelper)
|
||||
public ConfigureMachineKey(IIOHelper ioHelper, IMachineKeyConfig machineKeyConfig)
|
||||
{
|
||||
_ioHelper = ioHelper;
|
||||
_machineKeyConfig = machineKeyConfig;
|
||||
}
|
||||
|
||||
public override string View => HasMachineKey() == false ? base.View : "";
|
||||
@@ -27,10 +29,11 @@ namespace Umbraco.Web.Install.InstallSteps
|
||||
/// Don't display the view or execute if a machine key already exists
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static bool HasMachineKey()
|
||||
private bool HasMachineKey()
|
||||
{
|
||||
var section = (MachineKeySection) WebConfigurationManager.GetSection("system.web/machineKey");
|
||||
return section.ElementInformation.Source != null;
|
||||
return _machineKeyConfig.HasMachineKey;
|
||||
// var section = (MachineKeySection) WebConfigurationManager.GetSection("system.web/machineKey");
|
||||
// return section.ElementInformation.Source != null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1,44 +1,31 @@
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Web.Cache;
|
||||
using Umbraco.Web.Composing;
|
||||
using Umbraco.Web.Install.Models;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
|
||||
namespace Umbraco.Web.Install.InstallSteps
|
||||
{
|
||||
[InstallSetupStep(InstallationType.NewInstall | InstallationType.Upgrade,
|
||||
"UmbracoVersion", 50, "Installation is complete!, get ready to be redirected to your new CMS.",
|
||||
PerformsAppRestart = true)]
|
||||
internal class SetUmbracoVersionStep : InstallSetupStep<object>
|
||||
public class SetUmbracoVersionStep : InstallSetupStep<object>
|
||||
{
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
|
||||
private readonly InstallHelper _installHelper;
|
||||
private readonly IGlobalSettings _globalSettings;
|
||||
private readonly IUserService _userService;
|
||||
private readonly IUmbracoVersion _umbracoVersion;
|
||||
private readonly IIOHelper _ioHelper;
|
||||
|
||||
public SetUmbracoVersionStep(IHttpContextAccessor httpContextAccessor, InstallHelper installHelper, IGlobalSettings globalSettings, IUserService userService, IUmbracoVersion umbracoVersion, IIOHelper ioHelper)
|
||||
public SetUmbracoVersionStep(IUmbracoContextAccessor umbracoContextAccessor, InstallHelper installHelper, IGlobalSettings globalSettings, IUmbracoVersion umbracoVersion)
|
||||
{
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_umbracoContextAccessor = umbracoContextAccessor;
|
||||
_installHelper = installHelper;
|
||||
_globalSettings = globalSettings;
|
||||
_userService = userService;
|
||||
_umbracoVersion = umbracoVersion;
|
||||
_ioHelper = ioHelper;
|
||||
}
|
||||
|
||||
public override Task<InstallSetupResult> ExecuteAsync(object model)
|
||||
{
|
||||
var security = new WebSecurity(_httpContextAccessor, _userService, _globalSettings, _ioHelper);
|
||||
|
||||
var security = _umbracoContextAccessor.UmbracoContext.Security;
|
||||
if (security.IsAuthenticated() == false && _globalSettings.ConfigurationStatus.IsNullOrWhiteSpace())
|
||||
{
|
||||
security.PerformLogin(-1);
|
||||
@@ -1,13 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Models.Packaging;
|
||||
using Umbraco.Web.Composing;
|
||||
using Umbraco.Net;
|
||||
using Umbraco.Web.Install.Models;
|
||||
|
||||
namespace Umbraco.Web.Install.InstallSteps
|
||||
@@ -20,14 +18,16 @@ namespace Umbraco.Web.Install.InstallSteps
|
||||
private readonly InstallHelper _installHelper;
|
||||
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
|
||||
private readonly IUmbracoVersion _umbracoVersion;
|
||||
private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime;
|
||||
private readonly IContentService _contentService;
|
||||
private readonly IPackagingService _packageService;
|
||||
|
||||
public StarterKitDownloadStep(IContentService contentService, IPackagingService packageService, InstallHelper installHelper, IUmbracoContextAccessor umbracoContextAccessor, IUmbracoVersion umbracoVersion)
|
||||
public StarterKitDownloadStep(IContentService contentService, IPackagingService packageService, InstallHelper installHelper, IUmbracoContextAccessor umbracoContextAccessor, IUmbracoVersion umbracoVersion, IUmbracoApplicationLifetime umbracoApplicationLifetime)
|
||||
{
|
||||
_installHelper = installHelper;
|
||||
_umbracoContextAccessor = umbracoContextAccessor;
|
||||
_umbracoVersion = umbracoVersion;
|
||||
_umbracoApplicationLifetime = umbracoApplicationLifetime;
|
||||
_contentService = contentService;
|
||||
_packageService = packageService;
|
||||
}
|
||||
@@ -54,7 +54,7 @@ namespace Umbraco.Web.Install.InstallSteps
|
||||
|
||||
var (packageFile, packageId) = await DownloadPackageFilesAsync(starterKitId.Value);
|
||||
|
||||
UmbracoApplication.Restart();
|
||||
_umbracoApplicationLifetime.Restart();
|
||||
|
||||
return new InstallSetupResult(new Dictionary<string, object>
|
||||
{
|
||||
@@ -2,9 +2,8 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Web.Composing;
|
||||
using Umbraco.Net;
|
||||
using Umbraco.Web.Install.Models;
|
||||
|
||||
namespace Umbraco.Web.Install.InstallSteps
|
||||
@@ -14,13 +13,13 @@ namespace Umbraco.Web.Install.InstallSteps
|
||||
PerformsAppRestart = true)]
|
||||
internal class StarterKitInstallStep : InstallSetupStep<object>
|
||||
{
|
||||
private readonly IHttpContextAccessor _httContextAccessor;
|
||||
private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime;
|
||||
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
|
||||
private readonly IPackagingService _packagingService;
|
||||
|
||||
public StarterKitInstallStep(IHttpContextAccessor httContextAccessor, IUmbracoContextAccessor umbracoContextAccessor, IPackagingService packagingService)
|
||||
public StarterKitInstallStep(IUmbracoApplicationLifetime umbracoApplicationLifetime, IUmbracoContextAccessor umbracoContextAccessor, IPackagingService packagingService)
|
||||
{
|
||||
_httContextAccessor = httContextAccessor;
|
||||
_umbracoApplicationLifetime = umbracoApplicationLifetime;
|
||||
_umbracoContextAccessor = umbracoContextAccessor;
|
||||
_packagingService = packagingService;
|
||||
}
|
||||
@@ -34,7 +33,9 @@ namespace Umbraco.Web.Install.InstallSteps
|
||||
|
||||
InstallBusinessLogic(packageId);
|
||||
|
||||
UmbracoApplication.Restart(_httContextAccessor.GetRequiredHttpContext());
|
||||
_umbracoApplicationLifetime.Restart();
|
||||
|
||||
|
||||
|
||||
return Task.FromResult<InstallSetupResult>(null);
|
||||
}
|
||||
@@ -77,12 +77,13 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
string ConvertIntegerToOrderableString { get; }
|
||||
string ConvertDateToOrderableString { get; }
|
||||
string ConvertDecimalToOrderableString { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns the default isolation level for the database
|
||||
/// </summary>
|
||||
IsolationLevel DefaultIsolationLevel { get; }
|
||||
|
||||
string DbProvider { get; }
|
||||
IEnumerable<string> GetTablesInSchema(IDatabase db);
|
||||
IEnumerable<ColumnInfo> GetColumnsInSchema(IDatabase db);
|
||||
|
||||
|
||||
@@ -175,6 +175,8 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
return items.Select(x => new Tuple<string, string, string, string>(x.TableName, x.ColumnName, x.Name, x.Definition));
|
||||
}
|
||||
|
||||
public override string DbProvider => ServerVersion.IsAzure ? "SqlAzure" : "SqlServer";
|
||||
|
||||
public override IEnumerable<string> GetTablesInSchema(IDatabase db)
|
||||
{
|
||||
var items = db.Fetch<dynamic>("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = (SELECT SCHEMA_NAME())");
|
||||
|
||||
@@ -202,6 +202,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
}
|
||||
|
||||
public abstract IsolationLevel DefaultIsolationLevel { get; }
|
||||
public abstract string DbProvider { get; }
|
||||
|
||||
public virtual IEnumerable<string> GetTablesInSchema(IDatabase db)
|
||||
{
|
||||
|
||||
@@ -55,6 +55,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
}
|
||||
|
||||
public override System.Data.IsolationLevel DefaultIsolationLevel => System.Data.IsolationLevel.RepeatableRead;
|
||||
public override string DbProvider => "SqlServerCE";
|
||||
|
||||
public override string FormatColumnRename(string tableName, string oldName, string newName)
|
||||
{
|
||||
|
||||
@@ -156,14 +156,12 @@ namespace Umbraco.Tests.Routing
|
||||
|
||||
var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of<ILogger>(), context =>
|
||||
{
|
||||
var membershipHelper = new MembershipHelper(
|
||||
httpContextAccessor, Mock.Of<IPublishedMemberCache>(), Mock.Of<MembersMembershipProvider>(), Mock.Of<RoleProvider>(), Mock.Of<IMemberService>(), Mock.Of<IMemberTypeService>(), Mock.Of<IPublicAccessService>(), AppCaches.Disabled, Mock.Of<ILogger>(), ShortStringHelper, Mock.Of<IEntityService>());
|
||||
return new CustomDocumentController(Factory.GetInstance<IGlobalSettings>(),
|
||||
return new CustomDocumentController(Factory.GetInstance<IGlobalSettings>(),
|
||||
umbracoContextAccessor,
|
||||
Factory.GetInstance<ServiceContext>(),
|
||||
Factory.GetInstance<AppCaches>(),
|
||||
Factory.GetInstance<IProfilingLogger>(),
|
||||
new UmbracoHelper(Mock.Of<IPublishedContent>(), Mock.Of<ITagQuery>(), Mock.Of<ICultureDictionaryFactory>(), Mock.Of<IUmbracoComponentRenderer>(), Mock.Of<IPublishedContentQuery>(), membershipHelper));
|
||||
new UmbracoHelper(Mock.Of<IPublishedContent>(), Mock.Of<ITagQuery>(), Mock.Of<ICultureDictionaryFactory>(), Mock.Of<IUmbracoComponentRenderer>(), Mock.Of<IPublishedContentQuery>()));
|
||||
}), ShortStringHelper);
|
||||
|
||||
handler.GetHandlerForRoute(httpContext.Request.RequestContext, frequest);
|
||||
|
||||
@@ -154,14 +154,11 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting
|
||||
urlHelper.Setup(provider => provider.GetUrl(It.IsAny<IPublishedContent>(), It.IsAny<UrlMode>(), It.IsAny<string>(), It.IsAny<Uri>()))
|
||||
.Returns(UrlInfo.Url("/hello/world/1234"));
|
||||
|
||||
var membershipHelper = new MembershipHelper(httpContextAccessor, Mock.Of<IPublishedMemberCache>(), Mock.Of<MembersMembershipProvider>(), Mock.Of<RoleProvider>(), Mock.Of<IMemberService>(), Mock.Of<IMemberTypeService>(), Mock.Of<IPublicAccessService>(), AppCaches.Disabled, Mock.Of<ILogger>(), new MockShortStringHelper(), Mock.Of<IEntityService>());
|
||||
|
||||
var umbHelper = new UmbracoHelper(Mock.Of<IPublishedContent>(),
|
||||
Mock.Of<ITagQuery>(),
|
||||
Mock.Of<ICultureDictionaryFactory>(),
|
||||
Mock.Of<IUmbracoComponentRenderer>(),
|
||||
Mock.Of<IPublishedContentQuery>(),
|
||||
membershipHelper);
|
||||
Mock.Of<IPublishedContentQuery>());
|
||||
|
||||
return CreateController(controllerType, request, umbracoContextAccessor, umbHelper);
|
||||
}
|
||||
|
||||
@@ -69,8 +69,7 @@ namespace Umbraco.Tests.Testing.TestingTests
|
||||
Mock.Of<ITagQuery>(),
|
||||
Mock.Of<ICultureDictionaryFactory>(),
|
||||
Mock.Of<IUmbracoComponentRenderer>(),
|
||||
Mock.Of<IPublishedContentQuery>(),
|
||||
new MembershipHelper(Mock.Of<IHttpContextAccessor>(), Mock.Of<IPublishedMemberCache>(), Mock.Of<MembersMembershipProvider>(), Mock.Of<RoleProvider>(), Mock.Of<IMemberService>(), Mock.Of<IMemberTypeService>(), Mock.Of<IPublicAccessService>(), AppCaches.Disabled, Mock.Of<ILogger>(), ShortStringHelper, Mock.Of<IEntityService>()));
|
||||
Mock.Of<IPublishedContentQuery>());
|
||||
Assert.Pass();
|
||||
}
|
||||
|
||||
@@ -107,7 +106,8 @@ namespace Umbraco.Tests.Testing.TestingTests
|
||||
var memberTypeService = Mock.Of<IMemberTypeService>();
|
||||
var membershipProvider = new MembersMembershipProvider(memberService, memberTypeService, Mock.Of<IUmbracoVersion>(), TestHelper.GetHostingEnvironment(), TestHelper.GetIpResolver());
|
||||
var membershipHelper = new MembershipHelper(Mock.Of<IHttpContextAccessor>(), Mock.Of<IPublishedMemberCache>(), membershipProvider, Mock.Of<RoleProvider>(), memberService, memberTypeService, Mock.Of<IPublicAccessService>(), AppCaches.Disabled, logger, ShortStringHelper, Mock.Of<IEntityService>());
|
||||
var umbracoHelper = new UmbracoHelper(Mock.Of<IPublishedContent>(), Mock.Of<ITagQuery>(), Mock.Of<ICultureDictionaryFactory>(), Mock.Of<IUmbracoComponentRenderer>(), Mock.Of<IPublishedContentQuery>(), membershipHelper);
|
||||
var umbracoHelper = new UmbracoHelper(Mock.Of<IPublishedContent>(), Mock.Of<ITagQuery>(), Mock.Of<ICultureDictionaryFactory>(),
|
||||
Mock.Of<IUmbracoComponentRenderer>(), Mock.Of<IPublishedContentQuery>());
|
||||
var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of<IMapDefinition>() }));
|
||||
|
||||
var umbracoApiController = new FakeUmbracoApiController(Mock.Of<IGlobalSettings>(), Mock.Of<IUmbracoContextAccessor>(), Mock.Of<ISqlContext>(), ServiceContext.CreatePartial(), AppCaches.NoCache, logger, Mock.Of<IRuntimeState>(), umbracoHelper, umbracoMapper, Mock.Of<IPublishedUrlProvider>());
|
||||
|
||||
@@ -123,8 +123,7 @@ namespace Umbraco.Tests.Web.Mvc
|
||||
Mock.Of<ITagQuery>(),
|
||||
Mock.Of<ICultureDictionaryFactory>(),
|
||||
Mock.Of<IUmbracoComponentRenderer>(),
|
||||
Mock.Of<IPublishedContentQuery>(query => query.Content(2) == content.Object),
|
||||
new MembershipHelper(Mock.Of<IHttpContextAccessor>(), Mock.Of<IPublishedMemberCache>(), Mock.Of<MembersMembershipProvider>(), Mock.Of<RoleProvider>(), Mock.Of<IMemberService>(), Mock.Of<IMemberTypeService>(), Mock.Of<IPublicAccessService>(), AppCaches.Disabled, Mock.Of<ILogger>(), ShortStringHelper, Mock.Of<IEntityService>()));
|
||||
Mock.Of<IPublishedContentQuery>(query => query.Content(2) == content.Object));
|
||||
|
||||
var ctrl = new TestSurfaceController(umbracoContextAccessor, helper);
|
||||
var result = ctrl.GetContent(2) as PublishedContentResult;
|
||||
|
||||
19
src/Umbraco.Web/AspNet/AspNetUmbracoApplicationLifetime.cs
Normal file
19
src/Umbraco.Web/AspNet/AspNetUmbracoApplicationLifetime.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Umbraco.Net;
|
||||
|
||||
namespace Umbraco.Web.AspNet
|
||||
{
|
||||
public class AspNetUmbracoApplicationLifetime : IUmbracoApplicationLifetime
|
||||
{
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
|
||||
public AspNetUmbracoApplicationLifetime(IHttpContextAccessor httpContextAccessor)
|
||||
{
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
}
|
||||
|
||||
public void Restart()
|
||||
{
|
||||
UmbracoApplication.Restart(_httpContextAccessor.HttpContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
19
src/Umbraco.Web/AspNet/AspNetUserAgentProvider.cs
Normal file
19
src/Umbraco.Web/AspNet/AspNetUserAgentProvider.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Umbraco.Net;
|
||||
|
||||
namespace Umbraco.Web.AspNet
|
||||
{
|
||||
public class AspNetUserAgentProvider : IUserAgentProvider
|
||||
{
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
|
||||
public AspNetUserAgentProvider(IHttpContextAccessor httpContextAccessor)
|
||||
{
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
}
|
||||
|
||||
public string GetUserAgent()
|
||||
{
|
||||
return _httpContextAccessor.GetRequiredHttpContext().Request.UserAgent;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,18 +6,24 @@ using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Web.Controllers
|
||||
{
|
||||
public class UmbLoginController : SurfaceController
|
||||
{
|
||||
private readonly MembershipHelper _membershipHelper;
|
||||
|
||||
public UmbLoginController()
|
||||
{
|
||||
}
|
||||
|
||||
public UmbLoginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper)
|
||||
public UmbLoginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory,
|
||||
ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper,
|
||||
MembershipHelper membershipHelper)
|
||||
: base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper)
|
||||
{
|
||||
_membershipHelper = membershipHelper;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@@ -30,7 +36,7 @@ namespace Umbraco.Web.Controllers
|
||||
return CurrentUmbracoPage();
|
||||
}
|
||||
|
||||
if (Members.Login(model.Username, model.Password) == false)
|
||||
if (_membershipHelper.Login(model.Username, model.Password) == false)
|
||||
{
|
||||
//don't add a field level error, just model level
|
||||
ModelState.AddModelError("loginModel", "Invalid username or password");
|
||||
|
||||
@@ -7,19 +7,25 @@ using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Web.Controllers
|
||||
{
|
||||
[MemberAuthorize]
|
||||
public class UmbLoginStatusController : SurfaceController
|
||||
{
|
||||
private readonly MembershipHelper _membershipHelper;
|
||||
|
||||
public UmbLoginStatusController()
|
||||
{
|
||||
}
|
||||
|
||||
public UmbLoginStatusController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper)
|
||||
public UmbLoginStatusController(IUmbracoContextAccessor umbracoContextAccessor,
|
||||
IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger,
|
||||
IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper, MembershipHelper membershipHelper)
|
||||
: base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper)
|
||||
{
|
||||
_membershipHelper = membershipHelper;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@@ -32,7 +38,7 @@ namespace Umbraco.Web.Controllers
|
||||
return CurrentUmbracoPage();
|
||||
}
|
||||
|
||||
if (Members.IsLoggedIn())
|
||||
if (_membershipHelper.IsLoggedIn())
|
||||
{
|
||||
FormsAuthentication.SignOut();
|
||||
}
|
||||
|
||||
@@ -15,12 +15,18 @@ namespace Umbraco.Web.Controllers
|
||||
[MemberAuthorize]
|
||||
public class UmbProfileController : SurfaceController
|
||||
{
|
||||
private readonly MembershipHelper _membershipHelper;
|
||||
|
||||
public UmbProfileController()
|
||||
{ }
|
||||
|
||||
public UmbProfileController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper)
|
||||
public UmbProfileController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory,
|
||||
ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger,
|
||||
UmbracoHelper umbracoHelper, MembershipHelper membershipHelper)
|
||||
: base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper)
|
||||
{ }
|
||||
{
|
||||
_membershipHelper = membershipHelper;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
@@ -32,7 +38,7 @@ namespace Umbraco.Web.Controllers
|
||||
return CurrentUmbracoPage();
|
||||
}
|
||||
|
||||
var updateAttempt = Members.UpdateMemberProfile(model);
|
||||
var updateAttempt = _membershipHelper.UpdateMemberProfile(model);
|
||||
if (updateAttempt.Success == false)
|
||||
{
|
||||
//don't add a field level error, just model level
|
||||
|
||||
@@ -8,18 +8,24 @@ using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Web.Models;
|
||||
using Umbraco.Web.Mvc;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Web.Controllers
|
||||
{
|
||||
public class UmbRegisterController : SurfaceController
|
||||
{
|
||||
private readonly MembershipHelper _membershipHelper;
|
||||
|
||||
public UmbRegisterController()
|
||||
{
|
||||
}
|
||||
|
||||
public UmbRegisterController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper)
|
||||
public UmbRegisterController(IUmbracoContextAccessor umbracoContextAccessor,
|
||||
IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger,
|
||||
IProfilingLogger profilingLogger, UmbracoHelper umbracoHelper, MembershipHelper membershipHelper)
|
||||
: base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger, umbracoHelper)
|
||||
{
|
||||
_membershipHelper = membershipHelper;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@@ -40,7 +46,7 @@ namespace Umbraco.Web.Controllers
|
||||
}
|
||||
|
||||
MembershipCreateStatus status;
|
||||
var member = Members.RegisterMember(model, out status, model.LoginOnSuccess);
|
||||
var member = _membershipHelper.RegisterMember(model, out status, model.LoginOnSuccess);
|
||||
|
||||
switch (status)
|
||||
{
|
||||
|
||||
@@ -331,7 +331,7 @@ namespace Umbraco.Web.Macros
|
||||
/// <returns>The text output of the macro execution.</returns>
|
||||
private MacroContent ExecutePartialView(MacroModel macro, IPublishedContent content)
|
||||
{
|
||||
var engine = new PartialViewMacroEngine();
|
||||
var engine = new PartialViewMacroEngine(_umbracoContextAccessor, _httpContextAccessor, _ioHelper);
|
||||
return engine.Execute(macro, content);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Web.Routing;
|
||||
using System.Web.WebPages;
|
||||
using Umbraco.Web.Mvc;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Models.PublishedContent;
|
||||
using Umbraco.Web.Composing;
|
||||
|
||||
@@ -15,37 +16,24 @@ namespace Umbraco.Web.Macros
|
||||
/// </summary>
|
||||
public class PartialViewMacroEngine
|
||||
{
|
||||
private readonly Func<HttpContextBase> _getHttpContext;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly IIOHelper _ioHelper;
|
||||
private readonly Func<IUmbracoContext> _getUmbracoContext;
|
||||
|
||||
public PartialViewMacroEngine()
|
||||
public PartialViewMacroEngine(IUmbracoContextAccessor umbracoContextAccessor, IHttpContextAccessor httpContextAccessor, IIOHelper ioHelper)
|
||||
{
|
||||
_getHttpContext = () =>
|
||||
{
|
||||
if (HttpContext.Current == null)
|
||||
throw new InvalidOperationException($"The {GetType()} cannot execute with a null HttpContext.Current reference.");
|
||||
return new HttpContextWrapper(HttpContext.Current);
|
||||
};
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_ioHelper = ioHelper;
|
||||
|
||||
_getUmbracoContext = () =>
|
||||
{
|
||||
if (Current.UmbracoContext == null)
|
||||
var context = umbracoContextAccessor.UmbracoContext;
|
||||
if (context == null)
|
||||
throw new InvalidOperationException($"The {GetType()} cannot execute with a null UmbracoContext.Current reference.");
|
||||
return Current.UmbracoContext;
|
||||
return context;
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor generally used for unit testing
|
||||
/// </summary>
|
||||
/// <param name="httpContext"></param>
|
||||
/// <param name="umbracoContext"> </param>
|
||||
internal PartialViewMacroEngine(HttpContextBase httpContext, IUmbracoContext umbracoContext)
|
||||
{
|
||||
_getHttpContext = () => httpContext;
|
||||
_getUmbracoContext = () => umbracoContext;
|
||||
}
|
||||
|
||||
public bool Validate(string code, string tempFileName, IPublishedContent currentPage, out string errorMessage)
|
||||
{
|
||||
var temp = GetVirtualPathFromPhysicalPath(tempFileName);
|
||||
@@ -68,7 +56,7 @@ namespace Umbraco.Web.Macros
|
||||
if (content == null) throw new ArgumentNullException(nameof(content));
|
||||
if (macro.MacroSource.IsNullOrWhiteSpace()) throw new ArgumentException("The MacroSource property of the macro object cannot be null or empty");
|
||||
|
||||
var http = _getHttpContext();
|
||||
var httpContext = _httpContextAccessor.GetRequiredHttpContext();
|
||||
var umbCtx = _getUmbracoContext();
|
||||
var routeVals = new RouteData();
|
||||
routeVals.Values.Add("controller", "PartialViewMacro");
|
||||
@@ -79,13 +67,14 @@ namespace Umbraco.Web.Macros
|
||||
var viewContext = new ViewContext { ViewData = new ViewDataDictionary() };
|
||||
//try and extract the current view context from the route values, this would be set in the UmbracoViewPage or in
|
||||
// the UmbracoPageResult if POSTing to an MVC controller but rendering in Webforms
|
||||
if (http.Request.RequestContext.RouteData.DataTokens.ContainsKey(Mvc.Constants.DataTokenCurrentViewContext))
|
||||
if (httpContext.Request.RequestContext.RouteData.DataTokens.ContainsKey(Mvc.Constants.DataTokenCurrentViewContext))
|
||||
{
|
||||
viewContext = (ViewContext)http.Request.RequestContext.RouteData.DataTokens[Mvc.Constants.DataTokenCurrentViewContext];
|
||||
viewContext = (ViewContext)httpContext.Request.RequestContext.RouteData.DataTokens[Mvc.Constants.DataTokenCurrentViewContext];
|
||||
}
|
||||
routeVals.DataTokens.Add("ParentActionViewContext", viewContext);
|
||||
|
||||
var request = new RequestContext(http, routeVals);
|
||||
var request = new RequestContext(httpContext, routeVals);
|
||||
|
||||
string output;
|
||||
using (var controller = new PartialViewMacroController(macro, content))
|
||||
{
|
||||
@@ -103,7 +92,7 @@ namespace Umbraco.Web.Macros
|
||||
|
||||
private string GetVirtualPathFromPhysicalPath(string physicalPath)
|
||||
{
|
||||
var rootpath = _getHttpContext().Server.MapPath("~/");
|
||||
var rootpath = _ioHelper.MapPath("~/");
|
||||
physicalPath = physicalPath.Replace(rootpath, "");
|
||||
physicalPath = physicalPath.Replace("\\", "/");
|
||||
return "~/" + physicalPath;
|
||||
|
||||
@@ -59,11 +59,6 @@ namespace Umbraco.Web.Mvc
|
||||
/// </summary>
|
||||
public IProfilingLogger ProfilingLogger { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the membership helper.
|
||||
/// </summary>
|
||||
public MembershipHelper Members => Umbraco.MembershipHelper;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Umbraco helper.
|
||||
/// </summary>
|
||||
|
||||
@@ -57,11 +57,6 @@ namespace Umbraco.Web.Mvc
|
||||
|
||||
protected IOwinContext OwinContext => Request.GetOwinContext();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the membership helper.
|
||||
/// </summary>
|
||||
public MembershipHelper Members => Umbraco.MembershipHelper;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Umbraco helper.
|
||||
/// </summary>
|
||||
|
||||
@@ -101,11 +101,6 @@ namespace Umbraco.Web.Mvc
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the membership helper.
|
||||
/// </summary>
|
||||
public MembershipHelper Members => Umbraco.MembershipHelper;
|
||||
|
||||
protected UmbracoViewPage()
|
||||
: this(
|
||||
Current.Factory.GetInstance<ServiceContext>(),
|
||||
|
||||
@@ -49,6 +49,7 @@ using Current = Umbraco.Web.Composing.Current;
|
||||
using Umbraco.Web.PropertyEditors;
|
||||
using Umbraco.Examine;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Web.AspNet;
|
||||
using Umbraco.Web.Models;
|
||||
|
||||
namespace Umbraco.Web.Runtime
|
||||
@@ -64,9 +65,11 @@ namespace Umbraco.Web.Runtime
|
||||
|
||||
composition.Register<UmbracoInjectedModule>();
|
||||
composition.Register<IIpResolver, AspNetIpResolver>();
|
||||
composition.Register<IUserAgentProvider, AspNetUserAgentProvider>();
|
||||
composition.Register<ISessionIdResolver, AspNetSessionIdResolver>();
|
||||
composition.Register<IHostingEnvironment, AspNetHostingEnvironment>();
|
||||
composition.Register<IBackOfficeInfo, AspNetBackOfficeInfo>();
|
||||
composition.Register<IUmbracoApplicationLifetime, AspNetUmbracoApplicationLifetime>();
|
||||
composition.Register<IPasswordHasher, AspNetPasswordHasher>();
|
||||
composition.Register<IFilePermissionHelper, FilePermissionHelper>(Lifetime.Singleton);
|
||||
|
||||
@@ -131,8 +134,7 @@ namespace Umbraco.Web.Runtime
|
||||
var umbCtx = factory.GetInstance<IUmbracoContext>();
|
||||
return new UmbracoHelper(umbCtx.IsFrontEndUmbracoRequest ? umbCtx.PublishedRequest?.PublishedContent : null,
|
||||
factory.GetInstance<ITagQuery>(), factory.GetInstance<ICultureDictionaryFactory>(),
|
||||
factory.GetInstance<IUmbracoComponentRenderer>(), factory.GetInstance<IPublishedContentQuery>(),
|
||||
factory.GetInstance<MembershipHelper>());
|
||||
factory.GetInstance<IUmbracoComponentRenderer>(), factory.GetInstance<IPublishedContentQuery>());
|
||||
});
|
||||
else
|
||||
composition.Register(_ => new UmbracoHelper());
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
|
||||
@@ -134,7 +134,9 @@
|
||||
<Compile Include="AppBuilderExtensions.cs" />
|
||||
<Compile Include="AreaRegistrationContextExtensions.cs" />
|
||||
<Compile Include="AspNet\AspNetHostingEnvironment.cs" />
|
||||
<Compile Include="AspNet\AspNetUserAgentProvider.cs" />
|
||||
<Compile Include="AspNet\FrameworkMarchal.cs" />
|
||||
<Compile Include="AspNet\AspNetUmbracoApplicationLifetime.cs" />
|
||||
<Compile Include="Cache\WebCachingAppCache.cs" />
|
||||
<Compile Include="Compose\AuditEventsComponent.cs" />
|
||||
<Compile Include="Compose\AuditEventsComposer.cs" />
|
||||
@@ -158,8 +160,6 @@
|
||||
<Compile Include="HttpContextExtensions.cs" />
|
||||
<Compile Include="ImageCropperTemplateCoreExtensions.cs" />
|
||||
<Compile Include="Install\ChangesMonitor.cs" />
|
||||
<Compile Include="Install\InstallSteps\StarterKitDownloadStep.cs" />
|
||||
<Compile Include="Install\InstallSteps\StarterKitInstallStep.cs" />
|
||||
<Compile Include="Logging\OwinLogger.cs" />
|
||||
<Compile Include="Logging\OwinLoggerFactory.cs" />
|
||||
<Compile Include="Logging\WebProfiler.cs" />
|
||||
@@ -270,7 +270,6 @@
|
||||
<Compile Include="Composing\CompositionExtensions\WebMappingProfiles.cs" />
|
||||
<Compile Include="Editors\BackOfficeNotificationsController.cs" />
|
||||
<Compile Include="Install\InstallStepCollection.cs" />
|
||||
<Compile Include="Install\InstallSteps\ConfigureMachineKey.cs" />
|
||||
<Compile Include="Editors\MemberGroupController.cs" />
|
||||
<Compile Include="Composing\CompositionExtensions\Controllers.cs" />
|
||||
<Compile Include="HealthCheck\HealthCheckController.cs" />
|
||||
@@ -359,7 +358,6 @@
|
||||
<Compile Include="Editors\RelationController.cs" />
|
||||
<Compile Include="GridTemplateExtensions.cs" />
|
||||
<Compile Include="Editors\TemplateQueryController.cs" />
|
||||
<Compile Include="Install\InstallSteps\SetUmbracoVersionStep.cs" />
|
||||
<Compile Include="Install\InstallSteps\NewInstallStep.cs" />
|
||||
<Compile Include="Install\UmbracoInstallArea.cs" />
|
||||
<Compile Include="Install\Controllers\InstallApiController.cs" />
|
||||
@@ -455,7 +453,6 @@
|
||||
<Compile Include="HttpRequestExtensions.cs" />
|
||||
<Compile Include="HttpUrlHelperExtensions.cs" />
|
||||
<Compile Include="Install\FilePermissionHelper.cs" />
|
||||
<Compile Include="Install\InstallHelper.cs" />
|
||||
<Compile Include="Install\HttpInstallAuthorizeAttribute.cs" />
|
||||
<Compile Include="Macros\PartialViewMacroController.cs" />
|
||||
<Compile Include="Macros\PartialViewMacroEngine.cs" />
|
||||
|
||||
@@ -70,7 +70,6 @@ namespace Umbraco.Web
|
||||
_variationContextAccessor.VariationContext = new VariationContext(_defaultCultureAccessor.DefaultCulture);
|
||||
}
|
||||
|
||||
|
||||
var webSecurity = new WebSecurity(_httpContextAccessor, _userService, _globalSettings, _ioHelper);
|
||||
|
||||
return new UmbracoContext(_httpContextAccessor, _publishedSnapshotService, webSecurity, _globalSettings, _variationContextAccessor, _ioHelper, _uriUtility, _cookieManager);
|
||||
|
||||
@@ -3,15 +3,12 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Xml.XPath;
|
||||
using Umbraco.Composing;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Dictionary;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.PublishedContent;
|
||||
using Umbraco.Core.Xml;
|
||||
using Umbraco.Web.Composing;
|
||||
using Umbraco.Web.Mvc;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Web
|
||||
{
|
||||
@@ -25,7 +22,6 @@ namespace Umbraco.Web
|
||||
{
|
||||
private readonly IPublishedContentQuery _publishedContentQuery;
|
||||
private readonly ITagQuery _tagQuery;
|
||||
private readonly MembershipHelper _membershipHelper;
|
||||
private readonly IUmbracoComponentRenderer _componentRenderer;
|
||||
private readonly ICultureDictionaryFactory _cultureDictionaryFactory;
|
||||
|
||||
@@ -48,13 +44,11 @@ namespace Umbraco.Web
|
||||
ITagQuery tagQuery,
|
||||
ICultureDictionaryFactory cultureDictionary,
|
||||
IUmbracoComponentRenderer componentRenderer,
|
||||
IPublishedContentQuery publishedContentQuery,
|
||||
MembershipHelper membershipHelper)
|
||||
IPublishedContentQuery publishedContentQuery)
|
||||
{
|
||||
_tagQuery = tagQuery ?? throw new ArgumentNullException(nameof(tagQuery));
|
||||
_cultureDictionaryFactory = cultureDictionary ?? throw new ArgumentNullException(nameof(cultureDictionary));
|
||||
_componentRenderer = componentRenderer ?? throw new ArgumentNullException(nameof(componentRenderer));
|
||||
_membershipHelper = membershipHelper ?? throw new ArgumentNullException(nameof(membershipHelper));
|
||||
_publishedContentQuery = publishedContentQuery ?? throw new ArgumentNullException(nameof(publishedContentQuery));
|
||||
_currentPage = currentPage;
|
||||
}
|
||||
@@ -84,11 +78,6 @@ namespace Umbraco.Web
|
||||
/// </summary>
|
||||
public IPublishedContentQuery ContentQuery => Ensure(_publishedContentQuery);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the membership helper.
|
||||
/// </summary>
|
||||
public MembershipHelper MembershipHelper => Ensure(_membershipHelper);
|
||||
|
||||
/// <summary>
|
||||
/// Gets (or sets) the current <see cref="IPublishedContent"/> item assigned to the UmbracoHelper.
|
||||
/// </summary>
|
||||
@@ -208,141 +197,7 @@ namespace Umbraco.Web
|
||||
|
||||
#endregion
|
||||
|
||||
#region Membership
|
||||
|
||||
/// <summary>
|
||||
/// Check if the current user has access to a document
|
||||
/// </summary>
|
||||
/// <param name="path">The full path of the document object to check</param>
|
||||
/// <returns>True if the current user has access or if the current document isn't protected</returns>
|
||||
public bool MemberHasAccess(string path)
|
||||
{
|
||||
return MembershipHelper.MemberHasAccess(path);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not the current member is logged in (based on the membership provider)
|
||||
/// </summary>
|
||||
/// <returns>True is the current user is logged in</returns>
|
||||
public bool MemberIsLoggedOn()
|
||||
{
|
||||
return MembershipHelper.IsLoggedIn();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Member/Content/Media from Udi
|
||||
|
||||
public IPublishedContent PublishedContent(Udi udi)
|
||||
{
|
||||
var guidUdi = udi as GuidUdi;
|
||||
if (guidUdi == null) return null;
|
||||
|
||||
var umbracoType = UdiEntityTypeHelper.ToUmbracoObjectType(udi.EntityType);
|
||||
|
||||
switch (umbracoType)
|
||||
{
|
||||
case UmbracoObjectTypes.Document:
|
||||
return Content(guidUdi.Guid);
|
||||
case UmbracoObjectTypes.Media:
|
||||
return Media(guidUdi.Guid);
|
||||
case UmbracoObjectTypes.Member:
|
||||
return Member(guidUdi.Guid);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Members
|
||||
|
||||
public IPublishedContent Member(Udi id)
|
||||
{
|
||||
var guidUdi = id as GuidUdi;
|
||||
return guidUdi == null ? null : Member(guidUdi.Guid);
|
||||
}
|
||||
|
||||
public IPublishedContent Member(Guid id)
|
||||
{
|
||||
return MembershipHelper.GetById(id);
|
||||
}
|
||||
|
||||
public IPublishedContent Member(object id)
|
||||
{
|
||||
if (ConvertIdObjectToInt(id, out var intId))
|
||||
return Member(intId);
|
||||
if (ConvertIdObjectToGuid(id, out var guidId))
|
||||
return Member(guidId);
|
||||
if (ConvertIdObjectToUdi(id, out var udiId))
|
||||
return Member(udiId);
|
||||
return null;
|
||||
}
|
||||
|
||||
public IPublishedContent Member(int id)
|
||||
{
|
||||
return MembershipHelper.GetById(id);
|
||||
}
|
||||
|
||||
public IPublishedContent Member(string id)
|
||||
{
|
||||
var asInt = id.TryConvertTo<int>();
|
||||
return asInt ? MembershipHelper.GetById(asInt.Result) : MembershipHelper.GetByProviderKey(id);
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(IEnumerable<int> ids)
|
||||
{
|
||||
return MembershipHelper.GetByIds(ids);
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(IEnumerable<string> ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(IEnumerable<Guid> ids)
|
||||
{
|
||||
return MembershipHelper.GetByIds(ids);
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(IEnumerable<Udi> ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(IEnumerable<object> ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(params int[] ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(params string[] ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(params Guid[] ids)
|
||||
{
|
||||
return MembershipHelper.GetByIds(ids);
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(params Udi[] ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
public IEnumerable<IPublishedContent> Members(params object[] ids)
|
||||
{
|
||||
return ids.Select(Member).WhereNotNull();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Content
|
||||
|
||||
|
||||
@@ -120,11 +120,6 @@ namespace Umbraco.Web.WebApi
|
||||
/// </summary>
|
||||
protected Uri ApplicationUrl => RuntimeState.ApplicationUrl;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the membership helper.
|
||||
/// </summary>
|
||||
public MembershipHelper Members => Umbraco.MembershipHelper;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Umbraco helper.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user