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); }
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 }); }
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) }); }
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 }); }
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")); } }
/// <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())); }