diff --git a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/MembersServiceCollectionExtensionsTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Web.Common/MembersServiceCollectionExtensionsTests.cs similarity index 90% rename from src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/MembersServiceCollectionExtensionsTests.cs rename to src/Umbraco.Tests.Integration/Umbraco.Web.Common/MembersServiceCollectionExtensionsTests.cs index dc730201fe..5072d569e0 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/MembersServiceCollectionExtensionsTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Web.Common/MembersServiceCollectionExtensionsTests.cs @@ -4,9 +4,9 @@ using NUnit.Framework; using Umbraco.Core.DependencyInjection; using Umbraco.Infrastructure.Security; using Umbraco.Tests.Integration.Testing; -using Umbraco.Web.BackOffice.DependencyInjection; +using Umbraco.Web.Common.DependencyInjection; -namespace Umbraco.Tests.Integration.Umbraco.Web.BackOffice +namespace Umbraco.Tests.Integration.Umbraco.Web.Common { [TestFixture] public class MembersServiceCollectionExtensionsTests : UmbracoIntegrationTest diff --git a/src/Umbraco.Web.BackOffice/DependencyInjection/ServiceCollectionExtensions.cs b/src/Umbraco.Web.BackOffice/DependencyInjection/ServiceCollectionExtensions.cs index 4aa6fc96c1..cea8a8fb2c 100644 --- a/src/Umbraco.Web.BackOffice/DependencyInjection/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.BackOffice/DependencyInjection/ServiceCollectionExtensions.cs @@ -10,6 +10,7 @@ using Umbraco.Infrastructure.Security; using Umbraco.Net; using Umbraco.Web.Actions; using Umbraco.Web.BackOffice.Authorization; +using Umbraco.Web.BackOffice.Extensions; using Umbraco.Web.BackOffice.Security; using Umbraco.Web.Common.AspNetCore; using Umbraco.Web.Common.Authorization; @@ -38,15 +39,6 @@ namespace Umbraco.Web.BackOffice.DependencyInjection services.ConfigureOptions(); } - /// - /// Adds the services required for using Members Identity - /// - public static void AddMembersIdentity(this IServiceCollection services) => - services.BuildMembersIdentity() - .AddDefaultTokenProviders() - .AddUserStore() - .AddMembersUserManager(); - private static BackOfficeIdentityBuilder BuildUmbracoBackOfficeIdentity(this IServiceCollection services) { // Borrowed from https://github.com/dotnet/aspnetcore/blob/master/src/Identity/Extensions.Core/src/IdentityServiceCollectionExtensions.cs#L33 @@ -85,15 +77,6 @@ namespace Umbraco.Web.BackOffice.DependencyInjection return new BackOfficeIdentityBuilder(services); } - private static MembersIdentityBuilder BuildMembersIdentity(this IServiceCollection services) - { - // Services used by Umbraco members identity - services.TryAddScoped, UserValidator>(); - services.TryAddScoped, PasswordValidator>(); - services.TryAddScoped, PasswordHasher>(); - return new MembersIdentityBuilder(services); - } - /// /// Add authorization handlers and policies /// diff --git a/src/Umbraco.Web.BackOffice/Extensions/IdentityBuilderExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/IdentityBuilderExtensions.cs index 7c576f2858..deb312d071 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/IdentityBuilderExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/IdentityBuilderExtensions.cs @@ -1,9 +1,8 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Security; using Umbraco.Infrastructure.Security; -namespace Umbraco.Extensions +namespace Umbraco.Web.BackOffice.Extensions { /// /// Extension methods for @@ -25,19 +24,6 @@ namespace Umbraco.Extensions return identityBuilder; } - /// - /// Adds a for the . - /// - /// The usermanager interface - /// The usermanager type - /// The current instance. - public static IdentityBuilder AddMembersUserManager(this IdentityBuilder identityBuilder) - where TUserManager : UserManager, TInterface - { - identityBuilder.Services.AddScoped(typeof(TInterface), typeof(TUserManager)); - return identityBuilder; - } - /// /// Adds a implementation for /// diff --git a/src/Umbraco.Web.Common/DependencyInjection/ServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/DependencyInjection/ServiceCollectionExtensions.cs index dd7eda895e..5733a1a634 100644 --- a/src/Umbraco.Web.Common/DependencyInjection/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/DependencyInjection/ServiceCollectionExtensions.cs @@ -1,7 +1,9 @@ using System.Collections.Generic; using System.Threading.Tasks; +using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Web.Caching; using SixLabors.ImageSharp.Web.Commands; @@ -9,6 +11,9 @@ using SixLabors.ImageSharp.Web.DependencyInjection; using SixLabors.ImageSharp.Web.Processors; using SixLabors.ImageSharp.Web.Providers; using Umbraco.Core.Configuration.Models; +using Umbraco.Infrastructure.Security; +using Umbraco.Web.Common.Extensions; +using Umbraco.Web.Common.Security; namespace Umbraco.Web.Common.DependencyInjection { @@ -55,6 +60,25 @@ namespace Umbraco.Web.Common.DependencyInjection return services; } + /// + /// Adds the services required for using Members Identity + /// + public static void AddMembersIdentity(this IServiceCollection services) => + services.BuildMembersIdentity() + .AddDefaultTokenProviders() + .AddUserStore() + .AddMembersUserManager(); + + + private static MembersIdentityBuilder BuildMembersIdentity(this IServiceCollection services) + { + // Services used by Umbraco members identity + services.TryAddScoped, UserValidator>(); + services.TryAddScoped, PasswordValidator>(); + services.TryAddScoped, PasswordHasher>(); + return new MembersIdentityBuilder(services); + } + private static void RemoveIntParamenterIfValueGreatherThen(IDictionary commands, string parameter, int maxValue) { if (commands.TryGetValue(parameter, out var command))