| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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;
- }
- }
- }
|