// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Microsoft.AspNet.Identity; using Microsoft.Framework.ConfigurationModel; using Microsoft.AspNet.Security.DataProtection; namespace Microsoft.Framework.DependencyInjection { public static class IdentityServiceCollectionExtensions { public static IdentityBuilder AddIdentity(this IServiceCollection services, IConfiguration identityConfig) { services.SetupOptions(identityConfig); return services.AddIdentity(); } public static IdentityBuilder AddIdentity(this IServiceCollection services) { return services.AddIdentity(); } public static IdentityBuilder AddIdentity(this IServiceCollection services, IConfiguration identityConfig = null) where TUser : class where TRole : class { if (identityConfig != null) { services.SetupOptions(identityConfig); } services.Add(IdentityServices.GetDefaultServices(identityConfig)); services.AddScoped>(); services.AddScoped>(); services.AddScoped>(); services.AddScoped>(); services.AddScoped, ClaimsIdentityFactory>(); return new IdentityBuilder(services); } public static IdentityBuilder AddDefaultIdentity(this IServiceCollection services, IConfiguration config = null) where TUser : class where TRole : class { return services.AddIdentity(config) .AddTokenProvider(new DataProtectorTokenProvider( new DataProtectionTokenProviderOptions { Name = Resources.DefaultTokenProvider, }, DataProtectionProvider.CreateFromDpapi().CreateProtector("ASP.NET Identity"))) .AddTokenProvider(new PhoneNumberTokenProvider()) .AddTokenProvider(new EmailTokenProvider()); } public static IdentityBuilder AddIdentity(this IServiceCollection services) where TUser : class { return services.AddIdentity(); } public static IdentityBuilder AddIdentity(this IServiceCollection services, IConfiguration identityConfig) where TUser : class { return services.AddIdentity(identityConfig); } } }