Merge remote-tracking branch 'refs/remotes/origin/v13/dev' into v14/dev
# Conflicts: # Directory.Packages.props
This commit is contained in:
@@ -12,23 +12,24 @@
|
||||
</ItemGroup>
|
||||
<!-- Microsoft packages -->
|
||||
<ItemGroup>
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
|
||||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Identity.Stores" Version="8.0.5" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Identity.Stores" Version="8.0.6" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
|
||||
@@ -44,14 +45,14 @@
|
||||
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" />
|
||||
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
|
||||
<PackageVersion Include="Dazinator.Extensions.FileProviders" Version="2.0.0" />
|
||||
<PackageVersion Include="Examine" Version="3.2.0" />
|
||||
<PackageVersion Include="Examine.Core" Version="3.2.0" />
|
||||
<PackageVersion Include="Examine" Version="3.2.1" />
|
||||
<PackageVersion Include="Examine.Core" Version="3.2.1" />
|
||||
<PackageVersion Include="HtmlAgilityPack" Version="1.11.61" />
|
||||
<PackageVersion Include="JsonPatch.Net" Version="3.1.0" />
|
||||
<PackageVersion Include="K4os.Compression.LZ4" Version="1.3.8" />
|
||||
<PackageVersion Include="MailKit" Version="4.6.0" />
|
||||
<PackageVersion Include="Markdown" Version="2.2.1" />
|
||||
<PackageVersion Include="MessagePack" Version="2.5.140" />
|
||||
<PackageVersion Include="MessagePack" Version="2.5.168" />
|
||||
<PackageVersion Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
|
||||
<PackageVersion Include="MiniProfiler.Shared" Version="4.3.8" />
|
||||
<PackageVersion Include="ncrontab" Version="3.3.3" />
|
||||
@@ -79,7 +80,7 @@
|
||||
<!-- Transitive pinned versions (only required because our direct dependencies have vulnerable versions of transitive dependencies) -->
|
||||
<ItemGroup>
|
||||
<!-- Both Microsoft.EntityFrameworkCore.SqlServer and NPoco.SqlServer bring in a vulnerable version of Azure.Identity -->
|
||||
<PackageVersion Include="Azure.Identity" Version="1.11.3" />
|
||||
<PackageVersion Include="Azure.Identity" Version="1.12.0" />
|
||||
<!-- Dazinator.Extensions.FileProviders brings in a vulnerable version of System.Net.Http -->
|
||||
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
|
||||
<!-- Examine brings in a vulnerable version of System.Security.Cryptography.Xml -->
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SixLabors.ImageSharp" />
|
||||
<PackageReference Include="SixLabors.ImageSharp.Web" />
|
||||
<PackageReference Include="SixLabors.ImageSharp.Web" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -7,9 +7,10 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Umbraco.CSharpTest.Net.Collections" />
|
||||
<PackageReference Include="Umbraco.CSharpTest.Net.Collections" />
|
||||
<PackageReference Include="MessagePack" />
|
||||
<PackageReference Include="K4os.Compression.LZ4" />
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -8,7 +8,9 @@ using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Routing;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Core.Web;
|
||||
using Umbraco.Cms.Web.Common.Controllers;
|
||||
using Umbraco.Cms.Web.Common.Routing;
|
||||
using Umbraco.Cms.Web.Website.Controllers;
|
||||
using Umbraco.Extensions;
|
||||
|
||||
@@ -37,6 +39,8 @@ internal class EagerMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy
|
||||
private readonly IRuntimeState _runtimeState;
|
||||
private readonly EndpointDataSource _endpointDataSource;
|
||||
private readonly UmbracoRequestPaths _umbracoRequestPaths;
|
||||
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
|
||||
private readonly IPublishedRouter _publishedRouter;
|
||||
private GlobalSettings _globalSettings;
|
||||
private readonly Lazy<Endpoint> _installEndpoint;
|
||||
private readonly Lazy<Endpoint> _renderEndpoint;
|
||||
@@ -45,11 +49,15 @@ internal class EagerMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy
|
||||
IRuntimeState runtimeState,
|
||||
EndpointDataSource endpointDataSource,
|
||||
UmbracoRequestPaths umbracoRequestPaths,
|
||||
IOptionsMonitor<GlobalSettings> globalSettings)
|
||||
IOptionsMonitor<GlobalSettings> globalSettings,
|
||||
IUmbracoContextAccessor umbracoContextAccessor,
|
||||
IPublishedRouter publishedRouter)
|
||||
{
|
||||
_runtimeState = runtimeState;
|
||||
_endpointDataSource = endpointDataSource;
|
||||
_umbracoRequestPaths = umbracoRequestPaths;
|
||||
_umbracoContextAccessor = umbracoContextAccessor;
|
||||
_publishedRouter = publishedRouter;
|
||||
_globalSettings = globalSettings.CurrentValue;
|
||||
globalSettings.OnChange(settings => _globalSettings = settings);
|
||||
_installEndpoint = new Lazy<Endpoint>(GetInstallEndpoint);
|
||||
@@ -112,11 +120,22 @@ internal class EagerMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy
|
||||
ControllerActionDescriptor? controllerDescriptor = routeEndpoint.Metadata.GetMetadata<ControllerActionDescriptor>();
|
||||
TypeInfo? controllerTypeInfo = controllerDescriptor?.ControllerTypeInfo;
|
||||
if (controllerTypeInfo is not null &&
|
||||
(controllerTypeInfo.IsType<RenderController>() || controllerTypeInfo.IsType<SurfaceController>()))
|
||||
(controllerTypeInfo.IsType<RenderController>()
|
||||
|| controllerTypeInfo.IsType<SurfaceController>()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If it's an UmbracoPageController we need to do some domain routing.
|
||||
// We need to do this in oder to handle cultures for our Dictionary.
|
||||
// This is because UmbracoPublishedContentCultureProvider is ued to set the Thread.CurrentThread.CurrentUICulture
|
||||
// The CultureProvider is run before the actual routing, this means that our UmbracoVirtualPageFilterAttribute is hit AFTER the culture is set.
|
||||
// Meaning we have to route the domain part already now, this is not pretty, but it beats having to look for content we know doesn't exist.
|
||||
if (controllerTypeInfo is not null && controllerTypeInfo.IsType<UmbracoPageController>())
|
||||
{
|
||||
await RouteVirtualRequestAsync(httpContext);
|
||||
}
|
||||
|
||||
if (routeEndpoint.Order < lowestOrder)
|
||||
{
|
||||
// We have to ensure that the route is valid for the current request method.
|
||||
@@ -153,6 +172,22 @@ internal class EagerMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy
|
||||
}
|
||||
}
|
||||
|
||||
private async Task RouteVirtualRequestAsync(HttpContext context)
|
||||
{
|
||||
if (_umbracoContextAccessor.TryGetUmbracoContext(out IUmbracoContext? umbracoContext) is false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
IPublishedRequestBuilder requestBuilder =
|
||||
await _publishedRouter.CreateRequestAsync(umbracoContext.CleanedUmbracoUrl);
|
||||
_publishedRouter.RouteDomain(requestBuilder);
|
||||
// This is just a temporary RouteValues object just for culture which will be overwritten later
|
||||
// so we can just use a dummy action descriptor.
|
||||
var umbracoRouteValues = new UmbracoRouteValues(requestBuilder.Build(), new ControllerActionDescriptor());
|
||||
context.Features.Set(umbracoRouteValues);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Replaces the first endpoint candidate with the specified endpoint, invalidating all other candidates,
|
||||
/// guaranteeing that the specified endpoint will be hit.
|
||||
|
||||
Reference in New Issue
Block a user