from django.core.mail import EmailMessage
class AuthFunction():
def check_password(self, password):
check = [
lambda element: all(
x.isdigit() or x.islower() or x.isupper() or (x in ['!', '@', '#', '$', '%', '^', '&', '*', '_']) for x
in element),
# 요소 하나 하나를 순환하며 숫자,소문자,대문자,지정된 특수문자 제외한 요소가 있을경우 False
lambda element: len(element) == len(element.replace(" ", "")),
# 공백이 포함 되어 있을 경우 False
lambda element: True if (len(element) > 7 and len(element) < 21) else False,
# 전달된 값의 개수가 8~20 사이일 경우 True
lambda element: any(x.islower() or x.isupper() for x in element),
# 요소 하나하나를 순환하며, 요소중 대문자 또는 소문자가 있어야함(숫자로만 가입 불가능)
]
for i in check:
if not i(password):
return False
return True
lambda 함수를 이용하여 비밀번호 검증 절차를 밟는 메서드를 만들었다.
리스트요소로 전달되는 값을 람다함수를 이용하여 검증하여
람다함수의 이해도를 높이는데 많은 도움을 받게 되었다.
views.py의 클래스로 생성하여 다른 CBV 패턴의 클래스에 다중 상속을 통해 메서드를 호출하여 사용할 수 있도록 만들었다.
- 아이디와 비밀번호 검증에도 사용할 수 있었는데 시간 관계상 구현하지 못했다.
- 튜터님 피드백 : python 파일을 생성하여 import하여 모듈화하여 관리하는 것이 좋다.
from django.core.mail import EmailMessage
class AuthFunction():
def send_mail(self,email):
code = "".join([str(random.randrange(0, 10)) for i in range(6)])
title = "B4GAMES 가입 인증 코드 발송"
content = f"인증 코드 = {code}"
mail = EmailMessage(title, content, to=[email])
mail.send()
# 올바른 이메일로 발송했는지 검증 절차 필요
return code
사용자가 잘못된 이메일을 기입하여, 이메일 발송에 실패했을 경우, 예외처리를 구현하지 못했다.
인증과 관련되서 소셜 로그인 인증 기능을 구현했는데,
토큰 발급을 구현하지 못했다.