/// <summary>
        /// Creates a BackOfficeUserManager instance with all default options and the default BackOfficeUserManager
        /// </summary>
        /// <param name="options"></param>
        /// <param name="userService"></param>
        /// <param name="entityService"></param>
        /// <param name="externalLoginService"></param>
        /// <param name="membershipProvider"></param>
        /// <param name="contentSectionConfig"></param>
        /// <returns></returns>
        public static BackOfficeUserManager Create(
            IdentityFactoryOptions <BackOfficeUserManager> options,
            IUserService userService,
            IEntityService entityService,
            IExternalLoginService externalLoginService,
            MembershipProviderBase membershipProvider,
            IContentSection contentSectionConfig)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            if (userService == null)
            {
                throw new ArgumentNullException("userService");
            }
            if (externalLoginService == null)
            {
                throw new ArgumentNullException("externalLoginService");
            }

            var manager = new BackOfficeUserManager(
                new BackOfficeUserStore(userService, entityService, externalLoginService, membershipProvider));

            manager.InitUserManager(manager, membershipProvider, contentSectionConfig, options);
            return(manager);
        }
 protected void InitUserManager(
     BackOfficeUserManager manager,
     MembershipProviderBase membershipProvider,
     IdentityFactoryOptions <BackOfficeUserManager> options)
 {
     InitUserManager(manager, membershipProvider, UmbracoConfig.For.UmbracoSettings().Content, options);
 }
 public BackOfficeUserManager(
     IUserStore <BackOfficeIdentityUser, int> store,
     IdentityFactoryOptions <BackOfficeUserManager> options,
     MembershipProviderBase membershipProvider)
     : this(store, options, membershipProvider, UmbracoConfig.For.UmbracoSettings().Content)
 {
 }
示例#4
0
 /// <summary>
 /// Initializes the user manager with the correct options
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="membershipProvider"></param>
 /// <param name="options"></param>
 /// <returns></returns>
 protected void InitUserManager(
     BackOfficeUserManager manager,
     MembershipProviderBase membershipProvider,
     IdentityFactoryOptions <BackOfficeUserManager> options)
 {
     //NOTE: This method is mostly here for backwards compat
     base.InitUserManager(manager, membershipProvider, options.DataProtectionProvider);
 }
        public static BackOfficeUserManager Create(
            IdentityFactoryOptions <BackOfficeUserManager> options,
            BackOfficeUserStore customUserStore,
            MembershipProviderBase membershipProvider)
        {
            var manager = new BackOfficeUserManager(customUserStore, options, membershipProvider);

            return(manager);
        }
示例#6
0
        /// <summary>
        /// Initializes the user manager with the correct options
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="membershipProvider"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        protected void InitUserManager(BackOfficeUserManager manager, MembershipProviderBase membershipProvider, IdentityFactoryOptions <BackOfficeUserManager> options)
        {
            // Configure validation logic for usernames
            manager.UserValidator = new UserValidator <BackOfficeIdentityUser, int>(manager)
            {
                AllowOnlyAlphanumericUserNames = false,
                RequireUniqueEmail             = true
            };

            // Configure validation logic for passwords
            manager.PasswordValidator = new PasswordValidator
            {
                RequiredLength          = membershipProvider.MinRequiredPasswordLength,
                RequireNonLetterOrDigit = membershipProvider.MinRequiredNonAlphanumericCharacters > 0,
                RequireDigit            = false,
                RequireLowercase        = false,
                RequireUppercase        = false
                                          //TODO: Do we support the old regex match thing that membership providers used?
            };

            //use a custom hasher based on our membership provider
            manager.PasswordHasher = new MembershipPasswordHasher(membershipProvider);

            var dataProtectionProvider = options.DataProtectionProvider;

            if (dataProtectionProvider != null)
            {
                manager.UserTokenProvider = new DataProtectorTokenProvider <BackOfficeIdentityUser, int>(dataProtectionProvider.Create("ASP.NET Identity"));
            }

            manager.UserLockoutEnabledByDefault          = true;
            manager.MaxFailedAccessAttemptsBeforeLockout = membershipProvider.MaxInvalidPasswordAttempts;
            //NOTE: This just needs to be in the future, we currently don't support a lockout timespan, it's either they are locked
            // or they are not locked, but this determines what is set on the account lockout date which corresponds to whether they are
            // locked out or not.
            manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromDays(30);

            //custom identity factory for creating the identity object for which we auth against in the back office
            manager.ClaimsIdentityFactory = new BackOfficeClaimsIdentityFactory();

            //NOTE: Not implementing these, if people need custom 2 factor auth, they'll need to implement their own UserStore to suport it

            //// 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 in here.
            //manager.RegisterTwoFactorProvider("PhoneCode", new PhoneNumberTokenProvider<ApplicationUser>
            //{
            //    MessageFormat = "Your security code is: {0}"
            //});
            //manager.RegisterTwoFactorProvider("EmailCode", new EmailTokenProvider<ApplicationUser>
            //{
            //    Subject = "Security Code",
            //    BodyFormat = "Your security code is: {0}"
            //});

            //manager.EmailService = new EmailService();
            //manager.SmsService = new SmsService();
        }
 public static BackOfficeUserManager Create(
     IdentityFactoryOptions <BackOfficeUserManager> options,
     IUserService userService,
     IExternalLoginService externalLoginService,
     MembershipProviderBase membershipProvider)
 {
     return(Create(options, userService,
                   ApplicationContext.Current.Services.EntityService,
                   externalLoginService, membershipProvider,
                   UmbracoConfig.For.UmbracoSettings().Content));
 }
 public BackOfficeUserManager(
     IUserStore <BackOfficeIdentityUser, int> store,
     IdentityFactoryOptions <BackOfficeUserManager> options,
     MembershipProviderBase membershipProvider,
     IContentSection contentSectionConfig)
     : base(store)
 {
     if (options == null)
     {
         throw new ArgumentNullException("options");
     }
     InitUserManager(this, membershipProvider, contentSectionConfig, options);
 }
示例#9
0
        public BackOfficeUserManager(
            IUserStore <BackOfficeIdentityUser, int> store,
            IdentityFactoryOptions <BackOfficeUserManager> options,
            MembershipProviderBase membershipProvider)
            : base(store)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            var manager = new BackOfficeUserManager(store);

            InitUserManager(manager, membershipProvider, options);
        }
示例#10
0
        public override async Task <IdentityResult> ValidateAsync(string item)
        {
            var result = await base.ValidateAsync(item);

            if (result.Succeeded == false)
            {
                return(result);
            }
            var providerValidate = MembershipProviderBase.IsPasswordValid(item, Provider.MinRequiredNonAlphanumericCharacters, Provider.PasswordStrengthRegularExpression, Provider.MinRequiredPasswordLength);

            if (providerValidate.Success == false)
            {
                return(IdentityResult.Failed("Could not set password, password rules violated: " + providerValidate.Result));
            }
            return(IdentityResult.Success);
        }
示例#11
0
        public BackOfficeUserStore(IUserService userService, IMemberTypeService memberTypeService, IEntityService entityService, IExternalLoginService externalLoginService, IGlobalSettings globalSettings, MembershipProviderBase usersMembershipProvider)
        {
            _userService          = userService;
            _memberTypeService    = memberTypeService;
            _entityService        = entityService;
            _externalLoginService = externalLoginService;
            _globalSettings       = globalSettings;
            if (userService == null)
            {
                throw new ArgumentNullException("userService");
            }
            if (usersMembershipProvider == null)
            {
                throw new ArgumentNullException("usersMembershipProvider");
            }
            if (externalLoginService == null)
            {
                throw new ArgumentNullException("externalLoginService");
            }

            _userService          = userService;
            _externalLoginService = externalLoginService;

            if (usersMembershipProvider.PasswordFormat != MembershipPasswordFormat.Hashed)
            {
                throw new InvalidOperationException("Cannot use ASP.Net Identity with UmbracoMembersUserStore when the password format is not Hashed");
            }
        }
示例#12
0
 public UserAwareMembershipProviderPasswordHasher(MembershipProviderBase provider) : base(provider)
 {
 }
示例#13
0
 public MembershipProviderPasswordHasher(MembershipProviderBase provider)
 {
     MembershipProvider = provider;
 }
示例#14
0
 public BackOfficeUserStore(IUserService userService, IMemberTypeService memberTypeService, IEntityService entityService, IExternalLoginService externalLoginService, IGlobalSettings globalSettings, MembershipProviderBase usersMembershipProvider, UmbracoMapper mapper)
     : this(userService, memberTypeService, entityService, externalLoginService, globalSettings, usersMembershipProvider, mapper, Current.AppCaches)
 {
 }