Skip to content

Commit 3ce2e97

Browse files
Merge branch 'v14/dev' into contrib
2 parents cb09035 + 7e8dd02 commit 3ce2e97

File tree

75 files changed

+1604
-436
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1604
-436
lines changed

Directory.Packages.props

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,31 @@
55
</PropertyGroup>
66
<!-- Global packages (private, build-time packages for all projects) -->
77
<ItemGroup>
8-
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" />
8+
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.6.139" />
99
<GlobalPackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
10-
<GlobalPackageReference Include="Umbraco.Code" Version="2.1.0" />
10+
<GlobalPackageReference Include="Umbraco.Code" Version="2.2.0" />
1111
<GlobalPackageReference Include="Umbraco.GitVersioning.Extensions" Version="0.2.0" />
1212
</ItemGroup>
1313
<!-- Microsoft packages -->
1414
<ItemGroup>
15-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.5" />
16-
<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" />
15+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.6" />
16+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.6" />
17+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.10.0" />
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,22 +45,22 @@
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" />
5859
<PackageVersion Include="NPoco" Version="5.7.1" />
5960
<PackageVersion Include="NPoco.SqlServer" Version="5.7.1" />
60-
<PackageVersion Include="OpenIddict.Abstractions" Version="5.6.0" />
61-
<PackageVersion Include="OpenIddict.AspNetCore" Version="5.6.0" />
62-
<PackageVersion Include="OpenIddict.EntityFrameworkCore" Version="5.6.0" />
61+
<PackageVersion Include="OpenIddict.Abstractions" Version="5.7.0" />
62+
<PackageVersion Include="OpenIddict.AspNetCore" Version="5.7.0" />
63+
<PackageVersion Include="OpenIddict.EntityFrameworkCore" Version="5.7.0" />
6364
<PackageVersion Include="Serilog" Version="3.1.1" />
6465
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.1" />
6566
<PackageVersion Include="Serilog.Enrichers.Process" Version="2.0.2" />
@@ -68,7 +69,7 @@
6869
<PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" />
6970
<PackageVersion Include="Serilog.Formatting.Compact" Version="2.0.0" />
7071
<PackageVersion Include="Serilog.Formatting.Compact.Reader" Version="3.0.0" />
71-
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.0" />
72+
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.1" />
7273
<PackageVersion Include="Serilog.Sinks.Async" Version="1.5.0" />
7374
<PackageVersion Include="Serilog.Sinks.File" Version="5.0.0" />
7475
<PackageVersion Include="Serilog.Sinks.Map" Version="1.0.2" />
@@ -79,7 +80,7 @@
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 -->
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.Extensions.Options;
2+
using OpenIddict.Server.AspNetCore;
3+
using Umbraco.Cms.Core.Configuration.Models;
4+
5+
namespace Umbraco.Cms.Api.Common.Configuration;
6+
7+
internal class ConfigureOpenIddict : IConfigureOptions<OpenIddictServerAspNetCoreOptions>
8+
{
9+
private readonly IOptions<GlobalSettings> _globalSettings;
10+
11+
public ConfigureOpenIddict(IOptions<GlobalSettings> globalSettings) => _globalSettings = globalSettings;
12+
13+
public void Configure(OpenIddictServerAspNetCoreOptions options)
14+
=> options.DisableTransportSecurityRequirement = _globalSettings.Value.UseHttps is false;
15+
}

src/Umbraco.Cms.Api.Common/DependencyInjection/UmbracoBuilderAuthExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Microsoft.IdentityModel.Tokens;
55
using OpenIddict.Server;
66
using OpenIddict.Validation;
7+
using Umbraco.Cms.Api.Common.Configuration;
78
using Umbraco.Cms.Api.Common.Security;
89
using Umbraco.Cms.Core;
910
using Umbraco.Cms.Core.Configuration.Models;
@@ -132,5 +133,6 @@ private static void ConfigureOpenIddict(IUmbracoBuilder builder)
132133
});
133134

134135
builder.Services.AddRecurringBackgroundJob<OpenIddictCleanupJob>();
136+
builder.Services.ConfigureOptions<ConfigureOpenIddict>();
135137
}
136138
}

src/Umbraco.Cms.Api.Delivery/Services/RequestHeaderHandler.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,5 @@ internal abstract class RequestHeaderHandler
88

99
protected RequestHeaderHandler(IHttpContextAccessor httpContextAccessor) => _httpContextAccessor = httpContextAccessor;
1010

11-
protected string? GetHeaderValue(string headerName)
12-
{
13-
HttpContext httpContext = _httpContextAccessor.HttpContext ??
14-
throw new InvalidOperationException("Could not obtain an HTTP context");
15-
16-
return httpContext.Request.Headers[headerName];
17-
}
11+
protected string? GetHeaderValue(string headerName) => _httpContextAccessor.HttpContext?.Request.Headers[headerName];
1812
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using Asp.Versioning;
2+
using Microsoft.AspNetCore.Authorization;
3+
using Microsoft.AspNetCore.Http;
4+
using Microsoft.AspNetCore.Mvc;
5+
using Umbraco.Cms.Api.Management.Factories;
6+
using Umbraco.Cms.Api.Management.ViewModels.User;
7+
using Umbraco.Cms.Core.Models.Membership;
8+
using Umbraco.Cms.Core.Security.Authorization;
9+
using Umbraco.Cms.Core.Services;
10+
using Umbraco.Cms.Core.Services.OperationStatus;
11+
using Umbraco.Cms.Web.Common.Authorization;
12+
using Umbraco.Extensions;
13+
14+
namespace Umbraco.Cms.Api.Management.Controllers.User;
15+
16+
[ApiVersion("1.0")]
17+
public class CalculatedStartNodesUserController : UserControllerBase
18+
{
19+
private readonly IAuthorizationService _authorizationService;
20+
private readonly IUserService _userService;
21+
private readonly IUserPresentationFactory _userPresentationFactory;
22+
23+
public CalculatedStartNodesUserController(
24+
IAuthorizationService authorizationService,
25+
IUserService userService,
26+
IUserPresentationFactory userPresentationFactory)
27+
{
28+
_authorizationService = authorizationService;
29+
_userService = userService;
30+
_userPresentationFactory = userPresentationFactory;
31+
}
32+
33+
[HttpGet("{id:guid}/calculate-start-nodes")]
34+
[MapToApiVersion("1.0")]
35+
[ProducesResponseType(typeof(CalculatedUserStartNodesResponseModel), StatusCodes.Status200OK)]
36+
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
37+
public async Task<IActionResult> CalculatedStartNodes(CancellationToken cancellationToken, Guid id)
38+
{
39+
AuthorizationResult authorizationResult = await _authorizationService.AuthorizeResourceAsync(
40+
User,
41+
UserPermissionResource.WithKeys(id),
42+
AuthorizationPolicies.UserPermissionByResource);
43+
44+
if (!authorizationResult.Succeeded)
45+
{
46+
return Forbidden();
47+
}
48+
49+
IUser? user = await _userService.GetAsync(id);
50+
51+
if (user is null)
52+
{
53+
return UserOperationStatusResult(UserOperationStatus.UserNotFound);
54+
}
55+
56+
CalculatedUserStartNodesResponseModel responseModel = await _userPresentationFactory.CreateCalculatedUserStartNodesResponseModelAsync(user);
57+
return Ok(responseModel);
58+
}
59+
}

src/Umbraco.Cms.Api.Management/DependencyInjection/BackOfficeAuthBuilderExtensions.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@ public static IUmbracoBuilder AddBackOfficeAuthentication(this IUmbracoBuilder b
2727

2828
public static IUmbracoBuilder AddTokenRevocation(this IUmbracoBuilder builder)
2929
{
30-
builder.AddNotificationAsyncHandler<UserSavingNotification, RevokeUserAuthenticationTokensNotificationHandler>();
3130
builder.AddNotificationAsyncHandler<UserSavedNotification, RevokeUserAuthenticationTokensNotificationHandler>();
3231
builder.AddNotificationAsyncHandler<UserDeletedNotification, RevokeUserAuthenticationTokensNotificationHandler>();
33-
builder.AddNotificationAsyncHandler<UserGroupDeletingNotification, RevokeUserAuthenticationTokensNotificationHandler>();
34-
builder.AddNotificationAsyncHandler<UserGroupDeletedNotification, RevokeUserAuthenticationTokensNotificationHandler>();
3532
builder.AddNotificationAsyncHandler<UserLoginSuccessNotification, RevokeUserAuthenticationTokensNotificationHandler>();
3633

3734
return builder;

0 commit comments

Comments
 (0)