internal static PasswordCharacterPolicies FromApiPasswordCharacterPolicies(ApiCharacterRules apiPolicies) { if (apiPolicies == null) { return(null); } PasswordCharacterPolicies policies = new PasswordCharacterPolicies { NumberOfMustContainCharacteristics = apiPolicies.NumberOfCharacteristicsToEnforce }; policies.PredefinedCharacterSets = new List <PasswordCharacterSet>(); foreach (string current in apiPolicies.MustContainCharacters) { if (current != "alpha") { PasswordCharacterSetType type = EnumConverter.ConvertValueToCharacterSetTypeEnum(current); policies.PredefinedCharacterSets.Add(new PasswordCharacterSet { Type = type, Set = GeneratePasswordPoliciesSet(type) }); } } // Convert "alpha" value to uppercase & lowercase if one of them are not included yet if (apiPolicies.MustContainCharacters.Contains("alpha")) { if (!apiPolicies.MustContainCharacters.Contains("lowercase")) { PasswordCharacterSetType type = PasswordCharacterSetType.Lowercase; policies.PredefinedCharacterSets.Add(new PasswordCharacterSet { Type = type, Set = GeneratePasswordPoliciesSet(type) }); } if (!apiPolicies.MustContainCharacters.Contains("uppercase")) { PasswordCharacterSetType type = PasswordCharacterSetType.Uppercase; policies.PredefinedCharacterSets.Add(new PasswordCharacterSet { Type = type, Set = GeneratePasswordPoliciesSet(type) }); } } return(policies); }
internal static char[] GeneratePasswordPoliciesSet(PasswordCharacterSetType type) { switch (type) { case PasswordCharacterSetType.Lowercase: return(ApiConfig.LOWERCASE_SET); case PasswordCharacterSetType.Uppercase: return(ApiConfig.UPPERCASE_SET); case PasswordCharacterSetType.Numeric: return(ApiConfig.NUMERIC_SET); case PasswordCharacterSetType.Special: return(ApiConfig.SPECIAL_SET); default: return(new char[0]); } }