SIGN UP
import json
import bcrypt
import jwt
from django.views import View
from django.http import HttpResponse, JsonResponse
from .models import Account
class SignUpView(View):
def post(self, request):
data = json.loads(request.body)
try:
if Account.objects.filter(email=data['email']).exists():
return JsonResponse({'message':'EMAIL_ALREADY_EXISTS'},status=400)
hashed_password = bcrypt.hashpw(data['password'].encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
Account.objects.create(
email = data['email'],
password = hashed_password,
name = data['name'],
nick_name = data['nick_name']
)
return JsonResponse({'message':'SUCCESS'}, status=200)
except KeyError:
return JsonResponse({'message':'INVALID_KEYS'}, status=400)
- DB email 테이블에 이미 존재하는 email 인지 확인 한 후 있으면 오류 메세지 전송 없으면 DB저장 후 성공메세지
SIGN IN
class SignInView(View):
def post(self, request):
data = json.loads(request.body)
try:
if Account.objects.filter(email = data['email']).exists():
if bcrypt.checkpw(data['password'].encode('utf-8'), Account.objects.get(email = data['email']).password.encode('utf-8')):
token = jwt.encode(
{'email':data['email']}, 'SECRET_KEY', algorithm='HS256').decode('utf-8')
return JsonResponse({'token':token},status=200)
return JsonResponse({'message':'INVALID_USER'},status=401)
return JsonResponse({'message':'INVALID_USER'},status=401)
except KeyError:
return JsonResponse({'message':'INVALID_KEYS'}, status=400)
- 로그인 시 입력된 패스워드와 DB에 저장된 패스워드를 bcrypt.checkpw를 통해 확인 한 후 일치할 경우 payload, secret key, algorithm을 입력하여 JsonResponse로 토큰을 발행
- 터미널에서 hostname -I 입력 후 내 IP 주소 확인 후 프론트엔드에게 전달 (IP주소:8000)
- python manage.py runserver 0:8000로 서버를 열어서 연결 확인