def post(self, request):
serializer = SignupSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
user = get_object_or_404(User, email=request.data["email"])
secured_key = RefreshToken.for_user(user).access_token
expired_at = datetime.fromtimestamp(secured_key['exp']).strftime("%Y-%m-%dT%H:%M:%S")
ConfirmEmail.objects.create(secured_key=secured_key, expired_at=expired_at, user=user)
frontend_site = "www.gaggamagga.shop"
absurl = f'https://{frontend_site}/confirm_email.html?secured_key={str(secured_key)}'
email_body = '안녕하세요!' + user.username +"고객님 이메일인증을 하시려면 아래 사이트를 접속해주세요 \\n" + absurl
message = {'email_body': email_body,'to_email':user.email, 'email_subject':'이메일 인증' }
Util.send_email(message)
return Response({"message":"회원가입이 되었습니다."}, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class Util:
@staticmethod
def send_email(message):
email = EmailMessage(subject=message['email_subject'], body=message['email_body'], to=[message['to_email']])
EmailThread(email).start()
- SignupSerializer에서 데이터가 유효한지 확인 후 저장함
- User의 이메일을 찾아 유저의 RefreshToken(simplejwt)로 secured_ket를 생성한다. 생성하는 이유는? secured_key로 인증하기 위해서이다. expired_at은 토큰 값으 만료시간을 나타내기 위해서이다. (datetime.fromtimestamp 관련)
- ConfrimEmail 모델에 저장한다.
- 이메을 보내줄 내용과 제목과 보낼 사람을 적는다.
- utils.py에 작성한 이메일 발송 함수에 맞게 값을 넣어 보낸다.