Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Security.Claims;
- using System.Threading.Tasks;
- using Domain;
- using Domain.Entities;
- using Microsoft.AspNet.Identity;
- using Microsoft.AspNet.Identity.EntityFramework;
- using Microsoft.AspNet.Identity.Owin;
- using Microsoft.Owin;
- using Microsoft.Owin.Security;
- using Microsoft.Owin.Security.DataProtection;
- namespace CKBase
- {
- public class EmailService : IIdentityMessageService
- {
- #region Methods
- public Task SendAsync(IdentityMessage message)
- {
- // Plug in your email service here to send an email.
- return Task.FromResult(0);
- }
- #endregion
- }
- public class SmsService : IIdentityMessageService
- {
- #region Methods
- public Task SendAsync(IdentityMessage message)
- {
- // Plug in your SMS service here to send a text message.
- return Task.FromResult(0);
- }
- #endregion
- }
- // Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application.
- public class ApplicationUserManager : UserManager<User>
- {
- #region Constructor(s), Destructor, and Dispose
- public ApplicationUserManager(IUserStore<User> store)
- : base(store)
- {}
- #endregion
- #region Methods
- public static ApplicationUserManager Create(
- IdentityFactoryOptions<ApplicationUserManager> options,
- IOwinContext context)
- {
- var manager = new ApplicationUserManager(new UserStore<User>(context.Get<YourDbNameHere>()));
- // Configure validation logic for usernames
- manager.UserValidator = new UserValidator<User>(manager)
- {
- AllowOnlyAlphanumericUserNames = false,
- RequireUniqueEmail = true
- };
- // Configure validation logic for passwords
- manager.PasswordValidator = new PasswordValidator
- {
- RequiredLength = 6,
- RequireNonLetterOrDigit = true,
- RequireDigit = true,
- RequireLowercase = true,
- RequireUppercase = true,
- };
- // Configure user lockout defaults
- manager.UserLockoutEnabledByDefault = true;
- manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
- manager.MaxFailedAccessAttemptsBeforeLockout = 5;
- // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user
- // You can write your own provider and plug it in here.
- manager.RegisterTwoFactorProvider("Phone Code",
- new PhoneNumberTokenProvider<User>
- {
- MessageFormat = "Your security code is {0}"
- });
- manager.RegisterTwoFactorProvider("Email Code",
- new EmailTokenProvider<User>
- {
- Subject = "Security Code",
- BodyFormat = "Your security code is {0}"
- });
- manager.EmailService = new EmailService();
- manager.SmsService = new SmsService();
- IDataProtectionProvider dataProtectionProvider = options.DataProtectionProvider;
- if(dataProtectionProvider != null)
- {
- manager.UserTokenProvider =
- new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"));
- }
- return manager;
- }
- #endregion
- }
- // Configure the application sign-in manager which is used in this application.
- public class ApplicationSignInManager : SignInManager<User, string>
- {
- #region Constructor(s), Destructor, and Dispose
- public ApplicationSignInManager(ApplicationUserManager userManager,
- IAuthenticationManager authenticationManager)
- : base(userManager, authenticationManager)
- {}
- #endregion
- #region Methods
- public static ApplicationSignInManager Create(
- IdentityFactoryOptions<ApplicationSignInManager> options,
- IOwinContext context)
- {
- return new ApplicationSignInManager(context.GetUserManager<ApplicationUserManager>(),
- context.Authentication);
- }
- public override Task<ClaimsIdentity> CreateUserIdentityAsync(User user)
- {
- return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager);
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement