Moving adding members services to correct project for use on the front-end, not just the back-office.

This commit is contained in:
Emma Garland
2021-02-14 12:57:48 +00:00
parent a4ee8055f9
commit 167811b23b
4 changed files with 28 additions and 35 deletions

View File

@@ -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

View File

@@ -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<ConfigureBackOfficeSecurityStampValidatorOptions>();
}
/// <summary>
/// Adds the services required for using Members Identity
/// </summary>
public static void AddMembersIdentity(this IServiceCollection services) =>
services.BuildMembersIdentity()
.AddDefaultTokenProviders()
.AddUserStore<MembersUserStore>()
.AddMembersUserManager<IMemberManager, MemberManager>();
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<IUserValidator<MembersIdentityUser>, UserValidator<MembersIdentityUser>>();
services.TryAddScoped<IPasswordValidator<MembersIdentityUser>, PasswordValidator<MembersIdentityUser>>();
services.TryAddScoped<IPasswordHasher<MembersIdentityUser>, PasswordHasher<MembersIdentityUser>>();
return new MembersIdentityBuilder(services);
}
/// <summary>
/// Add authorization handlers and policies
/// </summary>

View File

@@ -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
{
/// <summary>
/// Extension methods for <see cref="IdentityBuilder"/>
@@ -25,19 +24,6 @@ namespace Umbraco.Extensions
return identityBuilder;
}
/// <summary>
/// Adds a <see cref="UserManager{TUser}"/> for the <seealso cref="MembersIdentityUser"/>.
/// </summary>
/// <typeparam name="TInterface">The usermanager interface</typeparam>
/// <typeparam name="TUserManager">The usermanager type</typeparam>
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
public static IdentityBuilder AddMembersUserManager<TInterface, TUserManager>(this IdentityBuilder identityBuilder)
where TUserManager : UserManager<MembersIdentityUser>, TInterface
{
identityBuilder.Services.AddScoped(typeof(TInterface), typeof(TUserManager));
return identityBuilder;
}
/// <summary>
/// Adds a <see cref="SignInManager{TUser}"/> implementation for <seealso cref="BackOfficeIdentityUser"/>
/// </summary>

View File

@@ -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;
}
/// <summary>
/// Adds the services required for using Members Identity
/// </summary>
public static void AddMembersIdentity(this IServiceCollection services) =>
services.BuildMembersIdentity()
.AddDefaultTokenProviders()
.AddUserStore<MembersUserStore>()
.AddMembersUserManager<IMemberManager, MemberManager>();
private static MembersIdentityBuilder BuildMembersIdentity(this IServiceCollection services)
{
// Services used by Umbraco members identity
services.TryAddScoped<IUserValidator<MembersIdentityUser>, UserValidator<MembersIdentityUser>>();
services.TryAddScoped<IPasswordValidator<MembersIdentityUser>, PasswordValidator<MembersIdentityUser>>();
services.TryAddScoped<IPasswordHasher<MembersIdentityUser>, PasswordHasher<MembersIdentityUser>>();
return new MembersIdentityBuilder(services);
}
private static void RemoveIntParamenterIfValueGreatherThen(IDictionary<string, string> commands, string parameter, int maxValue)
{
if (commands.TryGetValue(parameter, out var command))