Skip to content

Commit 3c3d926

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/v13/dev' into v14/dev
# Conflicts: # Directory.Packages.props
2 parents 215fc43 + e3d6596 commit 3c3d926

File tree

4 files changed

+54
-17
lines changed

4 files changed

+54
-17
lines changed

Directory.Packages.props

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,24 @@
1212
</ItemGroup>
1313
<!-- Microsoft packages -->
1414
<ItemGroup>
15-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.5" />
15+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.6" />
16+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.6" />
1617
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
17-
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.5" />
18-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.5" />
19-
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.5" />
20-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.5" />
18+
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.6" />
19+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.6" />
20+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.6" />
21+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6" />
2122
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
2223
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
2324
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
2425
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
2526
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
26-
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.5" />
27+
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.6" />
2728
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="8.0.0" />
2829
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.0" />
2930
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
30-
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="8.0.5" />
31-
<PackageVersion Include="Microsoft.Extensions.Identity.Stores" Version="8.0.5" />
31+
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="8.0.6" />
32+
<PackageVersion Include="Microsoft.Extensions.Identity.Stores" Version="8.0.6" />
3233
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" />
3334
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
3435
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
@@ -44,14 +45,14 @@
4445
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" />
4546
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
4647
<PackageVersion Include="Dazinator.Extensions.FileProviders" Version="2.0.0" />
47-
<PackageVersion Include="Examine" Version="3.2.0" />
48-
<PackageVersion Include="Examine.Core" Version="3.2.0" />
48+
<PackageVersion Include="Examine" Version="3.2.1" />
49+
<PackageVersion Include="Examine.Core" Version="3.2.1" />
4950
<PackageVersion Include="HtmlAgilityPack" Version="1.11.61" />
5051
<PackageVersion Include="JsonPatch.Net" Version="3.1.0" />
5152
<PackageVersion Include="K4os.Compression.LZ4" Version="1.3.8" />
5253
<PackageVersion Include="MailKit" Version="4.6.0" />
5354
<PackageVersion Include="Markdown" Version="2.2.1" />
54-
<PackageVersion Include="MessagePack" Version="2.5.140" />
55+
<PackageVersion Include="MessagePack" Version="2.5.168" />
5556
<PackageVersion Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
5657
<PackageVersion Include="MiniProfiler.Shared" Version="4.3.8" />
5758
<PackageVersion Include="ncrontab" Version="3.3.3" />
@@ -79,12 +80,12 @@
7980
<!-- Transitive pinned versions (only required because our direct dependencies have vulnerable versions of transitive dependencies) -->
8081
<ItemGroup>
8182
<!-- Both Microsoft.EntityFrameworkCore.SqlServer and NPoco.SqlServer bring in a vulnerable version of Azure.Identity -->
82-
<PackageVersion Include="Azure.Identity" Version="1.11.3" />
83+
<PackageVersion Include="Azure.Identity" Version="1.12.0" />
8384
<!-- Dazinator.Extensions.FileProviders brings in a vulnerable version of System.Net.Http -->
8485
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
8586
<!-- Examine brings in a vulnerable version of System.Security.Cryptography.Xml -->
8687
<PackageVersion Include="System.Security.Cryptography.Xml" Version="8.0.1" />
8788
<!-- Both Dazinator.Extensions.FileProviders and MiniProfiler.AspNetCore.Mvc bring in a vulnerable version of System.Text.RegularExpressions -->
8889
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
8990
</ItemGroup>
90-
</Project>
91+
</Project>

src/Umbraco.Cms.Imaging.ImageSharp/Umbraco.Cms.Imaging.ImageSharp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<ItemGroup>
88
<PackageReference Include="SixLabors.ImageSharp" />
9-
<PackageReference Include="SixLabors.ImageSharp.Web" />
9+
<PackageReference Include="SixLabors.ImageSharp.Web" />
1010
</ItemGroup>
1111

1212
<ItemGroup>

src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Umbraco.CSharpTest.Net.Collections" />
10+
<PackageReference Include="Umbraco.CSharpTest.Net.Collections" />
1111
<PackageReference Include="MessagePack" />
1212
<PackageReference Include="K4os.Compression.LZ4" />
13+
<PackageReference Include="Newtonsoft.Json" />
1314
</ItemGroup>
1415

1516
<ItemGroup>

src/Umbraco.Web.Website/Routing/EagerMatcherPolicy.cs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
using Umbraco.Cms.Core.Configuration.Models;
99
using Umbraco.Cms.Core.Routing;
1010
using Umbraco.Cms.Core.Services;
11+
using Umbraco.Cms.Core.Web;
1112
using Umbraco.Cms.Web.Common.Controllers;
13+
using Umbraco.Cms.Web.Common.Routing;
1214
using Umbraco.Cms.Web.Website.Controllers;
1315
using Umbraco.Extensions;
1416

@@ -37,6 +39,8 @@ internal class EagerMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy
3739
private readonly IRuntimeState _runtimeState;
3840
private readonly EndpointDataSource _endpointDataSource;
3941
private readonly UmbracoRequestPaths _umbracoRequestPaths;
42+
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
43+
private readonly IPublishedRouter _publishedRouter;
4044
private GlobalSettings _globalSettings;
4145
private readonly Lazy<Endpoint> _installEndpoint;
4246
private readonly Lazy<Endpoint> _renderEndpoint;
@@ -45,11 +49,15 @@ public EagerMatcherPolicy(
4549
IRuntimeState runtimeState,
4650
EndpointDataSource endpointDataSource,
4751
UmbracoRequestPaths umbracoRequestPaths,
48-
IOptionsMonitor<GlobalSettings> globalSettings)
52+
IOptionsMonitor<GlobalSettings> globalSettings,
53+
IUmbracoContextAccessor umbracoContextAccessor,
54+
IPublishedRouter publishedRouter)
4955
{
5056
_runtimeState = runtimeState;
5157
_endpointDataSource = endpointDataSource;
5258
_umbracoRequestPaths = umbracoRequestPaths;
59+
_umbracoContextAccessor = umbracoContextAccessor;
60+
_publishedRouter = publishedRouter;
5361
_globalSettings = globalSettings.CurrentValue;
5462
globalSettings.OnChange(settings => _globalSettings = settings);
5563
_installEndpoint = new Lazy<Endpoint>(GetInstallEndpoint);
@@ -112,11 +120,22 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates)
112120
ControllerActionDescriptor? controllerDescriptor = routeEndpoint.Metadata.GetMetadata<ControllerActionDescriptor>();
113121
TypeInfo? controllerTypeInfo = controllerDescriptor?.ControllerTypeInfo;
114122
if (controllerTypeInfo is not null &&
115-
(controllerTypeInfo.IsType<RenderController>() || controllerTypeInfo.IsType<SurfaceController>()))
123+
(controllerTypeInfo.IsType<RenderController>()
124+
|| controllerTypeInfo.IsType<SurfaceController>()))
116125
{
117126
return;
118127
}
119128

129+
// If it's an UmbracoPageController we need to do some domain routing.
130+
// We need to do this in oder to handle cultures for our Dictionary.
131+
// This is because UmbracoPublishedContentCultureProvider is ued to set the Thread.CurrentThread.CurrentUICulture
132+
// The CultureProvider is run before the actual routing, this means that our UmbracoVirtualPageFilterAttribute is hit AFTER the culture is set.
133+
// 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.
134+
if (controllerTypeInfo is not null && controllerTypeInfo.IsType<UmbracoPageController>())
135+
{
136+
await RouteVirtualRequestAsync(httpContext);
137+
}
138+
120139
if (routeEndpoint.Order < lowestOrder)
121140
{
122141
// We have to ensure that the route is valid for the current request method.
@@ -153,6 +172,22 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates)
153172
}
154173
}
155174

175+
private async Task RouteVirtualRequestAsync(HttpContext context)
176+
{
177+
if (_umbracoContextAccessor.TryGetUmbracoContext(out IUmbracoContext? umbracoContext) is false)
178+
{
179+
return;
180+
}
181+
182+
IPublishedRequestBuilder requestBuilder =
183+
await _publishedRouter.CreateRequestAsync(umbracoContext.CleanedUmbracoUrl);
184+
_publishedRouter.RouteDomain(requestBuilder);
185+
// This is just a temporary RouteValues object just for culture which will be overwritten later
186+
// so we can just use a dummy action descriptor.
187+
var umbracoRouteValues = new UmbracoRouteValues(requestBuilder.Build(), new ControllerActionDescriptor());
188+
context.Features.Set(umbracoRouteValues);
189+
}
190+
156191
/// <summary>
157192
/// Replaces the first endpoint candidate with the specified endpoint, invalidating all other candidates,
158193
/// guaranteeing that the specified endpoint will be hit.

0 commit comments

Comments
 (0)