Esempio n. 1
0
        //======================================================================================================
        public async Task <string> GeneratePhoneNumberTokenAsync(ApplicationUser _User)
        {
            PhoneNumberTokenProvider <ApplicationUser> phoneNumberTokenProvider = new PhoneNumberTokenProvider <ApplicationUser>();
            var token = await phoneNumberTokenProvider.GenerateAsync("ResetPassword", _userManager, _User);

            return(token);
        }
 public PhoneNumberValidator(PhoneNumberTokenProvider <User> phoneNumberTokenProvider, UserManager <User> userManager, SignInManager <User> signInManager, IEventService events, ILogger <PhoneNumberValidator> logger)
 {
     _phoneNumberTokenProvider = phoneNumberTokenProvider;
     _userManager   = userManager;
     _signInManager = signInManager;
     _events        = events;
     _logger        = logger;
 }
Esempio n. 3
0
        private void RegisterPhoneNumberProvider()
        {
            var provider = new PhoneNumberTokenProvider <ApplicationUser>
            {
                MessageFormat = "Your security code is {0}",
            };

            this.RegisterTwoFactorProvider("Phone Code", provider);
        }
Esempio n. 4
0
        private void RegisterPhoneNumberProvider()
        {
            var provider = new PhoneNumberTokenProvider <FimaUser, int>
            {
                MessageFormat = "Your security code is {0}"
            };

            this.RegisterTwoFactorProvider("Phone Code", provider);
        }
        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);
        }
 public PhoneAuthenticationController(
     ISmsService smsService,
     DataProtectorTokenProvider <ApplicationUser> dataProtectorTokenProvider,
     PhoneNumberTokenProvider <ApplicationUser> phoneNumberTokenProvider,
     UserManager <ApplicationUser> userManager)
 {
     _smsService = smsService;
     _dataProtectorTokenProvider = dataProtectorTokenProvider;
     _phoneNumberTokenProvider   = phoneNumberTokenProvider;
     _userManager = userManager;
 }
 public MobileController(
     IConfiguration configuration,
     ISmsService smsService,
     DataProtectorTokenProvider <UserIdentity> dataProtectorTokenProvider,
     PhoneNumberTokenProvider <UserIdentity> phoneNumberTokenProvider,
     UserManager <UserIdentity> userManager)
 {
     _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
     _smsService    = smsService ?? throw new ArgumentNullException(nameof(smsService));
     _dataProtectorTokenProvider = dataProtectorTokenProvider ?? throw new ArgumentNullException(nameof(dataProtectorTokenProvider));
     _phoneNumberTokenProvider   = phoneNumberTokenProvider ?? throw new ArgumentNullException(nameof(phoneNumberTokenProvider));
     _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
 }
Esempio n. 8
0
 public VerifyPhoneNumberController(
     ISmsService smsService,
     DataProtectorTokenProvider <User> dataProtectorTokenProvider,
     PhoneNumberTokenProvider <User> phoneNumberTokenProvider,
     UserManager <User> userManager,
     ILogger <VerifyPhoneNumberController> logger)
 {
     _smsService = smsService ?? throw new ArgumentNullException(nameof(smsService));
     _dataProtectorTokenProvider = dataProtectorTokenProvider ?? throw new ArgumentNullException(nameof(dataProtectorTokenProvider));
     _phoneNumberTokenProvider   = phoneNumberTokenProvider ?? throw new ArgumentNullException(nameof(phoneNumberTokenProvider));
     _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
     _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Esempio n. 9
0
 public VerifyPhoneNumberTokenGrantValidator(
     PhoneNumberTokenProvider <ApplicationUser> phoneNumberTokenProvider,
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     IEventService events,
     ILogger <VerifyPhoneNumberTokenGrantValidator> logger)
 {
     _phoneNumberTokenProvider = phoneNumberTokenProvider;
     _userManager   = userManager;
     _signInManager = signInManager;
     _events        = events;
     _logger        = logger;
 }
Esempio n. 10
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 AccountAppService(
     ISmsSender smsSender,
     IdentityUserManager userManager,
     IdentityUserStore userStore,
     IIdentityUserRepository userRepository,
     IDistributedCache <AccountRegisterVerifyCacheItem> cache,
     PhoneNumberTokenProvider <IdentityUser> phoneNumberTokenProvider)
 {
     Cache                    = cache;
     SmsSender                = smsSender;
     UserStore                = userStore;
     UserManager              = userManager;
     UserRepository           = userRepository;
     PhoneNumberTokenProvider = phoneNumberTokenProvider;
     LocalizationResource     = typeof(Localization.AccountResource);
 }
Esempio n. 12
0
 public PhoneAuthenticationService(
     ISmsSender smsService,
     PhoneNumberTokenProvider <ApplicationUser> phoneNumberTokenProvider,
     UserManager <ApplicationUser> userManager,
     ILogger <PhoneAuthenticationService> logger,
     IEventService events,
     SignInManager <ApplicationUser> signInManager,
     IStringLocalizer <PhoneAuthenticationService> stringLocalizer)
 {
     _smsService = smsService;
     _phoneNumberTokenProvider = phoneNumberTokenProvider;
     _userManager     = userManager;
     _logger          = logger;
     _events          = events;
     _signInManager   = signInManager;
     _stringLocalizer = stringLocalizer;
 }
 public SmsTokenGrantValidator(
     IEventService eventService,
     UserManager <IdentityUser> userManager,
     SignInManager <IdentityUser> signInManager,
     IIdentityUserRepository userRepository,
     IStringLocalizer <AbpIdentityServerResource> stringLocalizer,
     PhoneNumberTokenProvider <IdentityUser> phoneNumberTokenProvider,
     ILogger <SmsTokenGrantValidator> logger)
 {
     Logger                   = logger;
     EventService             = eventService;
     UserManager              = userManager;
     SignInManager            = signInManager;
     Localizer                = stringLocalizer;
     UserRepository           = userRepository;
     PhoneNumberTokenProvider = phoneNumberTokenProvider;
 }
Esempio n. 14
0
        public async Task <int> VerifyResetPassword(ApplicationUser _User, string token, string newPassword)
        {
            if (_User != null && token != null)
            {
                PhoneNumberTokenProvider <ApplicationUser> phoneNumberTokenProvider = new PhoneNumberTokenProvider <ApplicationUser>();
                var isValidToken = await phoneNumberTokenProvider.ValidateAsync("ResetPassword", token, _userManager, _User);

                if (isValidToken)
                {
                    var status = await _userManager.AddPasswordAsync(_User, newPassword);

                    if (status.Succeeded)
                    {
                        return(1);
                    }
                }
                return(-1);
            }
            return(0);
        }
Esempio n. 15
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));
        }
        public WeChatTokenGrantValidator(
            IEventService eventService,
            IWeChatOpenIdFinder weChatOpenIdFinder,
            IHttpClientFactory httpClientFactory,
            UserManager <IdentityUser> userManager,
            IIdentityUserRepository userRepository,
            SignInManager <IdentityUser> signInManager,
            IStringLocalizer <AbpIdentityServerResource> stringLocalizer,
            PhoneNumberTokenProvider <IdentityUser> phoneNumberTokenProvider,
            IOptions <AbpWeChatOptions> options,
            ILogger <WeChatTokenGrantValidator> logger)
        {
            Logger  = logger;
            Options = options.Value;

            EventService             = eventService;
            UserManager              = userManager;
            SignInManager            = signInManager;
            Localizer                = stringLocalizer;
            UserRepository           = userRepository;
            WeChatOpenIdFinder       = weChatOpenIdFinder;
            HttpClientFactory        = httpClientFactory;
            PhoneNumberTokenProvider = phoneNumberTokenProvider;
        }
Esempio n. 17
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);
            }
        }