示例#1
0
        public bool Equals(PasswordComplexitySetting other)
        {
            if (other == null)
            {
                return(false);
            }

            return
                (RequireDigit == other.RequireDigit &&
                 RequireLowercase == other.RequireLowercase &&
                 RequireNonAlphanumeric == other.RequireNonAlphanumeric &&
                 RequireUppercase == other.RequireUppercase &&
                 RequiredLength == other.RequiredLength);
        }
示例#2
0
        public async Task <GetPasswordComplexitySettingOutput> GetPasswordComplexitySetting()
        {
            var passwordComplexitySetting = new PasswordComplexitySetting
            {
                RequireDigit           = await SettingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireDigit),
                RequireLowercase       = await SettingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireLowercase),
                RequireNonAlphanumeric = await SettingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric),
                RequireUppercase       = await SettingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireUppercase),
                RequiredLength         = await SettingManager.GetSettingValueAsync <int>(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequiredLength)
            };

            return(new GetPasswordComplexitySettingOutput
            {
                Setting = passwordComplexitySetting
            });
        }
示例#3
0
        public override IEnumerable <SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context)
        {
            context.Manager.GetSettingDefinition(AbpZeroSettingNames.UserManagement.TwoFactorLogin.IsEnabled).DefaultValue = false.ToString().ToLowerInvariant();

            var defaultPasswordComplexitySetting = new PasswordComplexitySetting
            {
                MinLength           = 6,
                MaxLength           = 10,
                UseNumbers          = true,
                UseUpperCaseLetters = false,
                UseLowerCaseLetters = true,
                UsePunctuations     = false,
            };

            return(new[]
            {
                //Host settings
                new SettingDefinition(AppSettings.TenantManagement.AllowSelfRegistration, ConfigurationManager.AppSettings[AppSettings.TenantManagement.UseCaptchaOnRegistration] ?? "true"),
                new SettingDefinition(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault, ConfigurationManager.AppSettings[AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault] ?? "false"),
                new SettingDefinition(AppSettings.TenantManagement.UseCaptchaOnRegistration, ConfigurationManager.AppSettings[AppSettings.TenantManagement.UseCaptchaOnRegistration] ?? "true"),
                new SettingDefinition(AppSettings.TenantManagement.DefaultEdition, ConfigurationManager.AppSettings[AppSettings.TenantManagement.DefaultEdition] ?? ""),
                new SettingDefinition(AppSettings.Security.PWComplexity, defaultPasswordComplexitySetting.ToJsonString(), scopes: SettingScopes.Application | SettingScopes.Tenant),

                //Tenant settings
                new SettingDefinition(AppSettings.UserManagement.AllowSelfRegistration, ConfigurationManager.AppSettings[AppSettings.UserManagement.AllowSelfRegistration] ?? "true", scopes: SettingScopes.Tenant),
                new SettingDefinition(AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault, ConfigurationManager.AppSettings[AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault] ?? "false", scopes: SettingScopes.Tenant),
                new SettingDefinition(AppSettings.UserManagement.UseCaptchaOnRegistration, ConfigurationManager.AppSettings[AppSettings.UserManagement.UseCaptchaOnRegistration] ?? "true", scopes: SettingScopes.Tenant),
                //Payment
                new SettingDefinition(AppSettings.Payment.KEYPAY_MERCHANT_KEY, ConfigurationManager.AppSettings[AppSettings.Payment.KEYPAY_MERCHANT_KEY] ?? "", scopes: SettingScopes.Tenant),
                new SettingDefinition(AppSettings.Payment.KEYPAY_MERCHANT_CODE, ConfigurationManager.AppSettings[AppSettings.Payment.KEYPAY_MERCHANT_CODE] ?? "", scopes: SettingScopes.Tenant),
                new SettingDefinition(AppSettings.Payment.KEYPAY_MERCHANT_TRANS_ID_MAX, ConfigurationManager.AppSettings[AppSettings.Payment.KEYPAY_MERCHANT_TRANS_ID_MAX] ?? "1", scopes: SettingScopes.Application),

                //LienThong
                new SettingDefinition(AppSettings.LienThongInfo.DOMAIN_LIEN_THONG, ConfigurationManager.AppSettings[AppSettings.LienThongInfo.DOMAIN_LIEN_THONG] ?? "", scopes: SettingScopes.Application),
                new SettingDefinition(AppSettings.LienThongInfo.TENANT_LIEN_THONG, ConfigurationManager.AppSettings[AppSettings.LienThongInfo.TENANT_LIEN_THONG] ?? "", scopes: SettingScopes.Application),
                new SettingDefinition(AppSettings.LienThongInfo.USER_LIEN_THONG, ConfigurationManager.AppSettings[AppSettings.LienThongInfo.USER_LIEN_THONG] ?? "", scopes: SettingScopes.Tenant),
                new SettingDefinition(AppSettings.LienThongInfo.PASS_LIEN_THONG, ConfigurationManager.AppSettings[AppSettings.LienThongInfo.PASS_LIEN_THONG] ?? "", scopes: SettingScopes.Tenant),
                new SettingDefinition(AppSettings.LienThongInfo.TOKEN_LIEN_THONG, ConfigurationManager.AppSettings[AppSettings.LienThongInfo.TOKEN_LIEN_THONG] ?? "", scopes: SettingScopes.Tenant)
            });
        }
示例#4
0
        public async Task <GetPasswordComplexitySettingOutput> GetPasswordComplexitySetting()
        {
            //   var settingValue = await SettingManager.GetSettingValueAsync(AppSettingNames.Security.PasswordComplexity);
            // var setting = JsonConvert.DeserializeObject<PasswordComplexitySetting>(settingValue);

            var coreAssemblyDirectoryPath = typeof(ProfileAppService).GetAssembly().GetDirectoryPathOrNull();
            var _appConfiguration         = AppConfigurations.Get(coreAssemblyDirectoryPath);

            var setting = new PasswordComplexitySetting();

            setting.MaxLength           = Convert.ToInt32(_appConfiguration["Password:MaxLength"]);
            setting.MinLength           = Convert.ToInt32(_appConfiguration["Password:RequiredLength"]);
            setting.UsePunctuations     = _appConfiguration["Password:RequireDigit"] == "true";
            setting.UseNumbers          = _appConfiguration["Password:RequireNonAlphanumeric"] == "true";
            setting.UseUpperCaseLetters = _appConfiguration["Password:RequireUppercase"] == "true";
            setting.UseLowerCaseLetters = _appConfiguration["Password:RequireLowercase"] == "true";

            return(new GetPasswordComplexitySettingOutput
            {
                Setting = setting
            });
        }
示例#5
0
        private async Task CheckPasswordComplexity(string password)
        {
            //var passwordComplexitySettingValue = await SettingManager.GetSettingValueAsync(AppConsts.App.Security.PasswordComplexity);
            //var passwordComplexitySetting = JsonConvert.DeserializeObject<PasswordComplexitySetting>(passwordComplexitySettingValue);
            //if (passwordComplexitySetting == null)
            //{
            var passwordComplexitySetting = new PasswordComplexitySetting
            {
                MinLength           = 6,
                MaxLength           = 10,
                UseNumbers          = true,
                UseUpperCaseLetters = false,
                UseLowerCaseLetters = true,
                UsePunctuations     = false,
            };
            //}
            var passwordComplexityChecker = new PasswordComplexityChecker();
            var passwordValid             = passwordComplexityChecker.Check(passwordComplexitySetting, password);

            if (!passwordValid)
            {
                throw new UserFriendlyException(L("PasswordComplexityNotSatisfied"));
            }
        }
示例#6
0
        /// <summary>
        ///     创建随机密码
        /// </summary>
        /// <returns></returns>
        public async Task <string> CreateRandomPassword()
        {
            var passwordComplexitySetting = new PasswordComplexitySetting
            {
                RequireDigit =
                    await _settingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement
                                                                      .PasswordComplexity.RequireDigit),
                RequireLowercase =
                    await _settingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement
                                                                      .PasswordComplexity.RequireLowercase),
                RequireNonAlphanumeric =
                    await _settingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement
                                                                      .PasswordComplexity.RequireNonAlphanumeric),
                RequireUppercase =
                    await _settingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement
                                                                      .PasswordComplexity.RequireUppercase),
                RequiredLength =
                    await _settingManager.GetSettingValueAsync <int>(AbpZeroSettingNames.UserManagement
                                                                     .PasswordComplexity.RequiredLength)
            };

            var upperCaseLetters = "ABCDEFGHJKLMNOPQRSTUVWXYZ";
            var lowerCaseLetters = "abcdefghijkmnopqrstuvwxyz";
            var digits           = "0123456789";
            var nonAlphanumerics = "!@$?_-";

            string[] randomChars = { upperCaseLetters, lowerCaseLetters, digits, nonAlphanumerics };

            var rand  = new Random(Environment.TickCount);
            var chars = new List <char>();

            if (passwordComplexitySetting.RequireUppercase)
            {
                chars.Insert(rand.Next(0, chars.Count),
                             upperCaseLetters[rand.Next(0, upperCaseLetters.Length)]);
            }

            if (passwordComplexitySetting.RequireLowercase)
            {
                chars.Insert(rand.Next(0, chars.Count),
                             lowerCaseLetters[rand.Next(0, lowerCaseLetters.Length)]);
            }

            if (passwordComplexitySetting.RequireDigit)
            {
                chars.Insert(rand.Next(0, chars.Count),
                             digits[rand.Next(0, digits.Length)]);
            }

            if (passwordComplexitySetting.RequireNonAlphanumeric)
            {
                chars.Insert(rand.Next(0, chars.Count),
                             nonAlphanumerics[rand.Next(0, nonAlphanumerics.Length)]);
            }

            for (var i = chars.Count; i < passwordComplexitySetting.RequiredLength; i++)
            {
                var rcs = randomChars[rand.Next(0, randomChars.Length)];
                chars.Insert(rand.Next(0, chars.Count),
                             rcs[rand.Next(0, rcs.Length)]);
            }

            return(new string(chars.ToArray()));
        }