이메일 인증 유효성 검사
@classmethod
def validated_email(cls, email):
"""
이메일 검증
"""
if email is None:
return False
email_pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
email_match = re.match(email_pattern, email)
return bool(email_match)
@classmethod
def validated_email_verification_code(cls, user, request_verification_code, mod):
"""
이메일 인증 코드 유효성 검사
"""
if user.login_type != "normal":
# 소셜 로그인일 경우 이메일 인증이 필요 없음을 알림
return [False, '소셜 로그인 계정 입니다.']
try:
# 사용자에게 등록된 이메일 인증번호 불러오기
verification_code = user.email_verification.verification_code
except users.models.EmailVerification.DoesNotExist:
# 원투원 필드가 없을 경우 예외처리
return [False, '인증 코드를 발급 받아 주세요.']
if verification_code is None:
# 인증 코드를 발급받지 않았을 경우 예외 처리
return [False, '인증 코드를 발급 받아 주세요.']
elif user.email_verification.authentication_type != mod:
# 발급 받은 유형의 인증 코드를 다른 용도로 사용할 경우
return [False, '현재 발급 받은 인증 코드 유형이 올바르지 않습니다.']
elif not (timezone.now() - user.email_verification.updated_at) <= timedelta(minutes=5):
# 인증 유효 기간이 지났을 경우 예외 처리
user.email_verification.verification_code = None
user.email_verification.save()
return [False, '인증 코드 유효 기간이 만료되었습니다.']
elif not verification_code == request_verification_code:
# 사용자가 입력한 이메일 인증번호와, 등록된 이메일 인증번호가 일치하지 않을 경우 예외처리
return [False, '인증 코드가 일치하지 않습니다.']
else:
return True