diff --git a/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netcoreapp.cs b/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netcoreapp.cs index 7163337816..bbef8ce4cc 100644 --- a/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netcoreapp.cs +++ b/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netcoreapp.cs @@ -57,6 +57,7 @@ namespace Microsoft.AspNetCore.Identity public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddRoleValidator() where TRole : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddTokenProvider(string providerName, System.Type provider) { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddTokenProvider(string providerName) where TProvider : class { throw null; } + public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserConfirmation() where TUserConfirmation : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserManager() where TUserManager : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserStore() where TStore : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserValidator() where TValidator : class { throw null; } diff --git a/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netstandard2.0.cs b/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netstandard2.0.cs index 7163337816..bbef8ce4cc 100644 --- a/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netstandard2.0.cs +++ b/src/Identity/Extensions.Core/ref/Microsoft.Extensions.Identity.Core.netstandard2.0.cs @@ -57,6 +57,7 @@ namespace Microsoft.AspNetCore.Identity public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddRoleValidator() where TRole : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddTokenProvider(string providerName, System.Type provider) { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddTokenProvider(string providerName) where TProvider : class { throw null; } + public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserConfirmation() where TUserConfirmation : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserManager() where TUserManager : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserStore() where TStore : class { throw null; } public virtual Microsoft.AspNetCore.Identity.IdentityBuilder AddUserValidator() where TValidator : class { throw null; } diff --git a/src/Identity/Extensions.Core/src/IdentityBuilder.cs b/src/Identity/Extensions.Core/src/IdentityBuilder.cs index 467ff301d8..357a0a7715 100644 --- a/src/Identity/Extensions.Core/src/IdentityBuilder.cs +++ b/src/Identity/Extensions.Core/src/IdentityBuilder.cs @@ -238,5 +238,13 @@ namespace Microsoft.AspNetCore.Identity } return AddScoped(managerType, typeof(TRoleManager)); } + + /// + /// Adds a for the . + /// + /// The type of the user confirmation to add. + /// The current instance. + public virtual IdentityBuilder AddUserConfirmation() where TUserConfirmation : class + => AddScoped(typeof(IUserConfirmation<>).MakeGenericType(UserType), typeof(TUserConfirmation)); } } diff --git a/src/Identity/test/Identity.Test/IdentityBuilderTest.cs b/src/Identity/test/Identity.Test/IdentityBuilderTest.cs index 492727ef04..9d5b4c88de 100644 --- a/src/Identity/test/Identity.Test/IdentityBuilderTest.cs +++ b/src/Identity/test/Identity.Test/IdentityBuilderTest.cs @@ -80,6 +80,22 @@ namespace Microsoft.AspNetCore.Identity.Test Assert.NotNull(thingy); } + [Fact] + public void CanOverrideUserConfirmation() + { + var services = new ServiceCollection() + .AddLogging() + .AddSingleton(new ConfigurationBuilder().Build()); + services.AddIdentity() + .AddClaimsPrincipalFactory() + .AddUserConfirmation() + .AddUserManager() + .AddUserStore() + .AddRoleStore(); + var thingy = services.BuildServiceProvider().GetRequiredService>() as MyUserConfirmation; + Assert.NotNull(thingy); + } + [Fact] public void CanOverrideRoleValidator() { @@ -356,5 +372,9 @@ namespace Microsoft.AspNetCore.Identity.Test } } + + private class MyUserConfirmation : DefaultUserConfirmation + { + } } }