public AppUserManager(IUserStore <User, int> store) : base(store)
        {
            UserValidator = new UserValidator <User, int>(this)
            {
                RequireUniqueEmail             = true,
                AllowOnlyAlphanumericUserNames = false
            };

            PasswordValidator = new PasswordValidator
            {
                RequiredLength          = 8,
                RequireDigit            = true,
                RequireNonLetterOrDigit = true,
                RequireLowercase        = true,
                RequireUppercase        = true,
            };

            UserTokenProvider = new EmailTokenProvider <User, int>()
            {
                Subject    = "Subject",
                BodyFormat = "Body"
            };

            EmailService = IoContainer.Resolve <IIdentityMessageService>();
        }
        public UserService(RoleManager <RoleModel> roleManager, ApplicationUserManager userManager, ILogger <UserService> logger, SignInManager <UserModel> signInManager, IMonitoringService telemetryClient)
        {
            _userManager     = userManager;
            _logger          = logger;
            _signInManager   = signInManager;
            _telemetryClient = telemetryClient;

            var emailTokenProvider = new EmailTokenProvider <UserModel>();

            _userManager.RegisterTokenProvider("Default", emailTokenProvider);

            if (!roleManager.RoleExistsAsync("Player").Result)
            {
                roleManager.CreateAsync(new RoleModel {
                    Name = "Player"
                }).Wait();
            }

            if (!roleManager.RoleExistsAsync("Administrator").Result)
            {
                roleManager.CreateAsync(new RoleModel {
                    Name = "Administrator"
                }).Wait();
            }
        }
 public ApplicationUserManagerService(IUserStore <ApplicationUser, int> store,
                                      IIdentityMessageService emailService,
                                      IDataProtectionProvider dataProtectionProvider)
     : base(store)
 {
     UserTokenProvider = new EmailTokenProvider <ApplicationUser, int>();
     EmailService      = emailService;
     Configure(dataProtectionProvider);
 }
示例#4
0
        private void RegisterEmailProvider()
        {
            var provider = new EmailTokenProvider <ApplicationUser>
            {
                Subject    = "Security Code",
                BodyFormat = "Your security code is {0}",
            };

            this.RegisterTwoFactorProvider("Email Code", provider);
        }
示例#5
0
        public UserService(ApplicationUserManager userManager, ILogger <UserService> logger, SignInManager <UserModel> signInManager)
        {
            _userManager   = userManager;
            _logger        = logger;
            _signInManager = signInManager;

            var emailTokenProvider = new EmailTokenProvider <UserModel>();

            _userManager.RegisterTokenProvider("Default", emailTokenProvider);
        }
        public static ApplicationUserManager Create(
            IdentityFactoryOptions <ApplicationUserManager> options,
            IOwinContext context)
        {
            ApplicationUserManager          applicationUserManager1 = new ApplicationUserManager((IUserStore <ApplicationUser>) new UserStore <ApplicationUser>((DbContext)OwinContextExtensions.Get <ApplicationDbContext>(context)));
            ApplicationUserManager          applicationUserManager2 = applicationUserManager1;
            UserValidator <ApplicationUser> userValidator1          = new UserValidator <ApplicationUser>((UserManager <ApplicationUser, string>)applicationUserManager1);

            ((UserValidator <ApplicationUser, string>)userValidator1).set_AllowOnlyAlphanumericUserNames(false);
            ((UserValidator <ApplicationUser, string>)userValidator1).set_RequireUniqueEmail(true);
            UserValidator <ApplicationUser> userValidator2 = userValidator1;

            ((UserManager <ApplicationUser, string>)applicationUserManager2).set_UserValidator((IIdentityValidator <ApplicationUser>)userValidator2);
            ApplicationUserManager applicationUserManager3 = applicationUserManager1;
            PasswordValidator      passwordValidator1      = new PasswordValidator();

            passwordValidator1.set_RequiredLength(6);
            passwordValidator1.set_RequireNonLetterOrDigit(true);
            passwordValidator1.set_RequireDigit(true);
            passwordValidator1.set_RequireLowercase(true);
            passwordValidator1.set_RequireUppercase(true);
            PasswordValidator passwordValidator2 = passwordValidator1;

            ((UserManager <ApplicationUser, string>)applicationUserManager3).set_PasswordValidator((IIdentityValidator <string>)passwordValidator2);
            ((UserManager <ApplicationUser, string>)applicationUserManager1).set_UserLockoutEnabledByDefault(true);
            ((UserManager <ApplicationUser, string>)applicationUserManager1).set_DefaultAccountLockoutTimeSpan(TimeSpan.FromMinutes(5.0));
            ((UserManager <ApplicationUser, string>)applicationUserManager1).set_MaxFailedAccessAttemptsBeforeLockout(5);
            ApplicationUserManager applicationUserManager4 = applicationUserManager1;
            PhoneNumberTokenProvider <ApplicationUser> numberTokenProvider1 = new PhoneNumberTokenProvider <ApplicationUser>();

            ((PhoneNumberTokenProvider <ApplicationUser, string>)numberTokenProvider1).set_MessageFormat("Your security code is {0}");
            PhoneNumberTokenProvider <ApplicationUser> numberTokenProvider2 = numberTokenProvider1;

            ((UserManager <ApplicationUser, string>)applicationUserManager4).RegisterTwoFactorProvider("Phone Code", (IUserTokenProvider <ApplicationUser, string>)numberTokenProvider2);
            ApplicationUserManager applicationUserManager5           = applicationUserManager1;
            EmailTokenProvider <ApplicationUser> emailTokenProvider1 = new EmailTokenProvider <ApplicationUser>();

            ((EmailTokenProvider <ApplicationUser, string>)emailTokenProvider1).set_Subject("Security Code");
            ((EmailTokenProvider <ApplicationUser, string>)emailTokenProvider1).set_BodyFormat("Your security code is {0}");
            EmailTokenProvider <ApplicationUser> emailTokenProvider2 = emailTokenProvider1;

            ((UserManager <ApplicationUser, string>)applicationUserManager5).RegisterTwoFactorProvider("Email Code", (IUserTokenProvider <ApplicationUser, string>)emailTokenProvider2);
            ((UserManager <ApplicationUser, string>)applicationUserManager1).set_EmailService((IIdentityMessageService) new EmailService());
            ((UserManager <ApplicationUser, string>)applicationUserManager1).set_SmsService((IIdentityMessageService) new SmsService());
            IDataProtectionProvider protectionProvider = options.get_DataProtectionProvider();

            if (protectionProvider != null)
            {
                ((UserManager <ApplicationUser, string>)applicationUserManager1).set_UserTokenProvider((IUserTokenProvider <ApplicationUser, string>) new DataProtectorTokenProvider <ApplicationUser>(protectionProvider.Create(new string[1]
                {
                    "ASP.NET Identity"
                })));
            }
            return(applicationUserManager1);
        }
示例#7
0
        public ApplicationUserManager(IUserStore <ApplicationUser> store) : base(store)
        {
            //TODO: update password validation rules
            PasswordValidator                    = new MinimumLengthValidator(4);
            UserLockoutEnabledByDefault          = true;
            DefaultAccountLockoutTimeSpan        = TimeSpan.FromMinutes(3);
            MaxFailedAccessAttemptsBeforeLockout = 5;

            //TODO: change provider to specificated one
            UserTokenProvider = new EmailTokenProvider <ApplicationUser>();
        }
示例#8
0
        public async Task EmailConfirmationToken()
        {
            var tokenProvider = new EmailTokenProvider <ApplicationUser>();

            this._userManager.RegisterTokenProvider("Default", tokenProvider);
            await this._userManager.CreateAsync(new ApplicationUser { UserName = "******", Email = "*****@*****.**", EmailConfirmed = false }, "Welcome");

            var x = await this._userManager.FindByEmailAsync("*****@*****.**");

            var token = await this._userManager.GeneratePasswordResetTokenAsync(x);

            await this._userManager.ResetPasswordAsync(x, token, "Welcome!");
        }
示例#9
0
        /// <summary>
        /// Configure user manager.
        /// </summary>
        /// <typeparam name="TUser">Type of the user.</typeparam>
        /// <param name="manager">User manager which has to be configured.</param>
        /// <param name="emailDisplayName">Display name for the email service.</param>
        public static void ConfigureUserManager <TUser>(this UserManager <TUser> manager, string emailDisplayName)
            where TUser : DubUser
        {
            if (manager == null)
            {
                throw new ArgumentNullException("manager");
            }

            if (string.IsNullOrWhiteSpace(emailDisplayName))
            {
                throw new ArgumentException("Email display name could not be empty.", "emailDisplayName");
            }

            manager.UserValidator = new UserValidator <TUser>(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.
            var phoneProvider = new PhoneNumberTokenProvider <TUser>
            {
                MessageFormat = "Your security code is {0}"
            };
            var emailProvider = new EmailTokenProvider <TUser>
            {
                Subject    = "Security Code",
                BodyFormat = "Your security code is {0}"
            };

            manager.RegisterTwoFactorProvider("Phone Code", phoneProvider);
            manager.RegisterTwoFactorProvider("Email Code", emailProvider);
            manager.EmailService = new MarkdownEmailService(emailDisplayName);
            manager.SmsService   = new EmptySmsService();
        }
        public ApplicationUserManager(IUserStore <LoginUser, int> store, EmailService emailService, SmsService smsService, IdentityFactoryOptions <ApplicationUserManager> options) : base(store)
        {
            // Configure validation logic for usernames
            this.UserValidator = new UserValidator <LoginUser, int>(this)
            {
                AllowOnlyAlphanumericUserNames = false,
                RequireUniqueEmail             = true
            };

            // Configure validation logic for passwords
            PasswordValidator = new PasswordValidator
            {
                RequiredLength          = 6,
                RequireNonLetterOrDigit = false,
                RequireDigit            = false,
                RequireLowercase        = false,
                RequireUppercase        = false,
            };

            // Configure user lockout defaults
            UserLockoutEnabledByDefault          = true;
            DefaultAccountLockoutTimeSpan        = TimeSpan.FromMinutes(5);
            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.
            RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider <LoginUser, int>
            {
                MessageFormat = "Your security code is {0}"
            });
            RegisterTwoFactorProvider("Email Code", new EmailTokenProvider <LoginUser, int>
            {
                Subject    = "Security Code",
                BodyFormat = "Your security code is {0}"
            });
            EmailService = emailService;
            SmsService   = smsService;

            var dataProtectionProvider = options.DataProtectionProvider;

            if (dataProtectionProvider != null)
            {
                IDataProtector dataProtector = dataProtectionProvider.Create("ASP.NET Identity");

                UserTokenProvider = new DataProtectorTokenProvider <LoginUser, int>(dataProtector);
            }

            //alternatively use this if you are running in Azure Web Sites
            UserTokenProvider = new EmailTokenProvider <LoginUser, int>();
        }
示例#11
0
        public AccountController(UserManager <IdentityUser> userManager,
                                 SignInManager <IdentityUser> signInManager,
                                 StoreContext context,
                                 IEmailSender emailSender)
        {
            _userManager = userManager;
            var provider = new EmailTokenProvider <IdentityUser>();

            _userManager.RegisterTokenProvider("Default", provider);

            _signInManager = signInManager;
            _emailSender   = emailSender;
            _context       = context;
        }
        private void Config()
        {
            // Configure validation logic for usernames
            UserValidator = new UserValidator <User>(this)
            {
                AllowOnlyAlphanumericUserNames = false,
                RequireUniqueEmail             = true
            };
            // Configure validation logic for passwords
            PasswordValidator = new PasswordValidator
            {
                RequiredLength = 6,
                //RequireNonLetterOrDigit = true,
                //RequireDigit = true,
                //RequireLowercase = true,
                //RequireUppercase = true,
            };

            // Configure user lockout defaults
            UserLockoutEnabledByDefault          = false;
            DefaultAccountLockoutTimeSpan        = TimeSpan.FromMinutes(5);
            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.
            RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider <User>
            {
                MessageFormat = "Your security code is {0}"
            });
            var emailTokenProvider = new EmailTokenProvider <User>
            {
                Subject    = "Security Code",
                BodyFormat = "Your security code is {0}"
            };

            RegisterTwoFactorProvider("Email Code", emailTokenProvider);
            EmailService = _emailService as IIdentityMessageService;
            SmsService   = _smsService as IIdentityMessageService;


            var dataProtectionProvider = _options.DataProtectionProvider;

            if (dataProtectionProvider == null)
            {
                dataProtectionProvider = new DpapiDataProtectionProvider("CAFE.Web");
            }
            UserTokenProvider =
                new DataProtectorTokenProvider <User>(dataProtectionProvider.Create("ASP.NET Identity"));
        }
示例#13
0
        public override async Task <string> GenerateTwoFactorTokenAsync(UserModel user, string tokenProvider)
        {
            using var dbContext = new GameDbContext(_dbContextOptions);
            var emailTokenProvider = new EmailTokenProvider <UserModel>();
            var token = await emailTokenProvider.GenerateAsync("TwoFactor", this, user);

            dbContext.TwoFactorCodeModels.Add(new TwoFactorCodeModel {
                TokenCode = token, TokenProvider = tokenProvider, UserId = user.Id
            });

            if (dbContext.ChangeTracker.HasChanges())
            {
                await dbContext.SaveChangesAsync();
            }

            return(token);
        }
示例#14
0
        public static UserManager <ApplicationUser> CreateUserManager([CallerMemberName] string name = null)
        {
            var database       = CreateDatabase(name);
            var store          = new UserStore <ApplicationUser>(database);
            var tokenGenerator = new EmailTokenProvider <ApplicationUser>();

            var userManager = new UserManager <ApplicationUser>(store, null, new PasswordHasher <ApplicationUser>(), null,
                                                                new[] { new PasswordValidator <ApplicationUser>(new IdentityErrorDescriber()) }, null, new IdentityErrorDescriber(), null,
                                                                new NullLogger <UserManager <ApplicationUser> >());

            userManager.Options.Password.RequireDigit           = false;
            userManager.Options.Password.RequireLowercase       = false;
            userManager.Options.Password.RequireNonAlphanumeric = false;
            userManager.Options.Password.RequireUppercase       = false;
            userManager.Options.Password.RequiredLength         = 1;
            userManager.RegisterTokenProvider(TokenOptions.DefaultProvider, tokenGenerator);

            return(userManager);
        }
示例#15
0
 public AccountController(
     UserManager <ApplicationUser> userManager,
     RoleManager <IdentityRole> roleManager,
     SignInManager <ApplicationUser> signInManager,
     IOptions <IdentityCookieOptions> identityCookieOptions,
     EmailTokenProvider <ApplicationUser> tokenProvider,
     IEmailSender emailSender,
     ISmsSender smsSender,
     ILoggerFactory loggerFactory,
     ApplicationDbContext dbContext)
 {
     _userManager          = userManager;
     _roleManager          = roleManager;
     _signInManager        = signInManager;
     _externalCookieScheme = identityCookieOptions.Value.ExternalCookieAuthenticationScheme;
     _emailSender          = emailSender;
     _smsSender            = smsSender;
     _logger    = loggerFactory.CreateLogger <AccountController>();
     _dbContext = dbContext;
 }
示例#16
0
        private static void RegisterUserManager(IWindsorContainer container, string connectionString)
        {
            var dbContext = GetDbContext(connectionString);
            IUserStore <ApplicationUser>      userStore     = new UserStore <ApplicationUser, ApplicationRole, ApplicationDbContext, Guid>(dbContext);
            IPasswordHasher <ApplicationUser> userHasher    = new PasswordHasher <ApplicationUser>();
            UserValidator <ApplicationUser>   userValidator = new UserValidator <ApplicationUser>();
            var validators = new UserValidator <ApplicationUser>[] { userValidator };

            var userManager = new UserManager <ApplicationUser>(userStore, null, userHasher, validators, null, null, null, null, null);

            // Set-up token providers.
            IUserTwoFactorTokenProvider <ApplicationUser> tokenProvider = new EmailTokenProvider <ApplicationUser>();

            userManager.RegisterTokenProvider("Default", tokenProvider);
            IUserTwoFactorTokenProvider <ApplicationUser> phoneTokenProvider = new PhoneNumberTokenProvider <ApplicationUser>();

            userManager.RegisterTokenProvider("PhoneTokenProvider", phoneTokenProvider);

            container.Register(Component.For <UserManager <ApplicationUser> >().Instance(userManager));
        }
示例#17
0
        public AppUserMananger(IUserStore <AppUser> store) : base(store)
        {
            // 配置用户名的验证逻辑
            UserValidator = new UserValidator <AppUser>(this)
            {
                AllowOnlyAlphanumericUserNames = true,
                RequireUniqueEmail             = false
            };

            // 配置密码的验证逻辑
            PasswordValidator = new PasswordValidator
            {
                RequiredLength          = 6,
                RequireNonLetterOrDigit = false,
                RequireDigit            = true,
                RequireLowercase        = true,
                RequireUppercase        = false
            };

            UserTokenProvider = new EmailTokenProvider <AppUser>();
        }
        /// <summary>
        /// Creates a new instance of the class and configures its internals.
        /// </summary>
        /// <param name="DubaiCultureUserStore">User store passed onto the base class.</param>
        public DubaiCultureUserManager(IDubaiCultureUserStore DubaiCultureUserStore) : base(DubaiCultureUserStore)
        {
            PasswordValidator = new PasswordValidator
            {
                RequireDigit            = true,
                RequiredLength          = 8,
                RequireLowercase        = true,
                RequireNonLetterOrDigit = true,
                RequireUppercase        = true
            };

            UserLockoutEnabledByDefault = false;
            EmailService = new EmailService();

            UserValidator = new UserValidator <DubaiCultureUser, int>(this)
            {
                RequireUniqueEmail = true
            };

            // Registration: Confirmed registration
            UserTokenProvider = new EmailTokenProvider <DubaiCultureUser, int>();
        }
示例#19
0
        public AppUserManager(IUserStore <AppUser, Guid> userStore, IServiceLogger logger)
            : base(userStore)
        {
            _logger = logger;

            ClaimsIdentityFactory = new AppClaimIdentityFactory();

            UserValidator = new UserValidator <AppUser, Guid>(this)
            {
                AllowOnlyAlphanumericUserNames = false,
                RequireUniqueEmail             = true,
            };

            PasswordValidator = new PasswordValidator()
            {
                RequiredLength          = 6,
                RequireNonLetterOrDigit = false,
                RequireDigit            = true,
                RequireLowercase        = true,
                RequireUppercase        = true,
            };

            UserTokenProvider = new EmailTokenProvider <AppUser, Guid>();
        }
示例#20
0
 private void ConfigureUserTokens()
 {
     UserTokenProvider = new EmailTokenProvider <RocamAppUser, string>();
 }
示例#21
0
        public static async Task SeedAdmin(AdminSetupModel adminSetupModel, string defaultLocale, BaseDbContext dbContext)
        {
            var userStore = new UserStore <EformUser,
                                           EformRole,
                                           BaseDbContext,
                                           int,
                                           IdentityUserClaim <int>,
                                           EformUserRole,
                                           IdentityUserLogin <int>,
                                           IdentityUserToken <int>,
                                           IdentityRoleClaim <int> >(dbContext);

            IPasswordHasher <EformUser> hasher = new PasswordHasher <EformUser>();
            var validator  = new UserValidator <EformUser>();
            var validators = new List <UserValidator <EformUser> > {
                validator
            };
            var userManager = new UserManager <EformUser>(userStore, null, hasher, validators, null, null, null,
                                                          null, null);

            // Set-up token providers.
            IUserTwoFactorTokenProvider <EformUser> tokenProvider = new EmailTokenProvider <EformUser>();

            userManager.RegisterTokenProvider("Default", tokenProvider);
            IUserTwoFactorTokenProvider <EformUser> phoneTokenProvider =
                new PhoneNumberTokenProvider <EformUser>();

            userManager.RegisterTokenProvider("PhoneTokenProvider", phoneTokenProvider);

            // Roles
            var roleStore   = new RoleStore <EformRole, BaseDbContext, int>(dbContext);
            var roleManager = new RoleManager <EformRole>(roleStore, null, null, null, null);

            if (!await roleManager.RoleExistsAsync(EformRole.Admin))
            {
                await roleManager.CreateAsync(new EformRole { Name = EformRole.Admin });
            }
            if (!await roleManager.RoleExistsAsync(EformRole.User))
            {
                await roleManager.CreateAsync(new EformRole { Name = EformRole.User });
            }

            // Seed admin and demo users
            var timeZoneString = "Europe/Copenhagen";

            try
            {
                TimeZoneInfo.FindSystemTimeZoneById(timeZoneString);
            }
            catch
            {
                timeZoneString = "E. Europe Standard Time";
            }
            var adminUser = new EformUser
            {
                UserName                     = adminSetupModel.Email,
                Email                        = adminSetupModel.Email,
                FirstName                    = adminSetupModel.FirstName,
                LastName                     = adminSetupModel.LastName,
                Locale                       = string.IsNullOrEmpty(defaultLocale) ? LocaleNames.English : defaultLocale,
                TimeZone                     = timeZoneString,
                DarkTheme                    = true,
                Formats                      = LocaleNames.German,
                EmailConfirmed               = true,
                TwoFactorEnabled             = false,
                IsGoogleAuthenticatorEnabled = false
            };

            if (!userManager.Users.Any(x => x.Email.Equals(adminUser.Email)))
            {
                var createResult = await userManager.CreateAsync(adminUser,
                                                                 adminSetupModel.Password);

                if (!createResult.Succeeded)
                {
                    throw new Exception("Could not create the user");
                }
            }

            var user = userManager.Users.FirstOrDefault(x => x.Email.Equals(adminUser.Email));

            if (!await userManager.IsInRoleAsync(user, EformRole.Admin))
            {
                await userManager.AddToRoleAsync(user, EformRole.Admin);
            }
        }
示例#22
0
        public TwoFactorValidator(ITranslator translator, IdentityUserManager identityUserManager, EmailTokenProvider emailProvider, SmsTokenProvider smsProvider, UserManager <ApplicationUser> manager)
        {
            m_translator          = translator;
            m_identityUserManager = identityUserManager;
            m_userManager         = manager;

            m_tokenProviders = new Dictionary <string, TotpSecurityStampBasedTokenProvider <ApplicationUser> >
            {
                { "Default", emailProvider }, //TODO make default provider configurable
                { EmailTokenProvider.ProviderName, emailProvider },
                { SmsTokenProvider.ProviderName, smsProvider },
            };
        }