namespace bitforum.Services { public interface IConfigService { // 회원가입 차단 확인 public bool IsRegisterBlock(); // 회원가입 시 이메일 인증 public bool IsRegisterEmailAuth(); // 회원가입 거부 목록 확인 public bool IsDeniedEmail(string email); // 비밀번호 정책 확인 public bool IsPasswordPolicyValid(string password); // 회원가입 시 이메일 인증 } public class ConfigService: IConfigService { public ConfigService() { } public bool IsRegisterBlock() { return Config.Register.IsRegisterBlock == 'Y'; } public bool IsRegisterEmailAuth() { return Config.Register.IsRegisterEmailAuth == 'Y'; } public bool IsDeniedEmail(string email) { var deniedEmailList = Config.Register.DeniedEmailList; if (string.IsNullOrWhiteSpace(deniedEmailList)) { return false; } return deniedEmailList.Split(',', StringSplitOptions.RemoveEmptyEntries).Any(deniedEmail => string.Equals(deniedEmail.Trim(), email, StringComparison.OrdinalIgnoreCase)); } public bool IsPasswordPolicyValid(string password) { // 설정값 가져오기 var minLengthConfig = Config.Register.PasswordMinLength; var uppercaseLengthConfig = Config.Register.PasswordUppercaseLength; var numbersLengthConfig = Config.Register.PasswordNumbersLength; var specialCharsLengthConfig = Config.Register.PasswordSpecialcharsLength; // 각 설정값을 기본값으로 초기화 (null일 경우 대체값 사용) int minLength = minLengthConfig ?? 6; // 최소 6자 int minUppercase = uppercaseLengthConfig ?? 0; int minNumbers = numbersLengthConfig ?? 0; int minSpecialChars = specialCharsLengthConfig ?? 0; // 비밀번호 길이 확인 if (password.Length < minLength) { return false; } // 대문자 개수 확인 int uppercaseCount = password.Count(char.IsUpper); if (uppercaseCount < minUppercase) { return false; } // 숫자 개수 확인 int numberCount = password.Count(char.IsDigit); if (numberCount < minNumbers) { return false; } // 특수문자 개수 확인 int specialCharCount = password.Count(ch => !char.IsLetterOrDigit(ch)); if (specialCharCount < minSpecialChars) { return false; } return true; } } }