✏️ Fix: [#48] user 필드 중복 체크 로직 구현 및 기존 분리 api 삭제
This commit is contained in:
@@ -4,7 +4,7 @@ from django.shortcuts import get_object_or_404
|
|||||||
|
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.viewsets import ReadOnlyModelViewSet
|
from rest_framework.viewsets import ReadOnlyModelViewSet
|
||||||
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer, TokenRefreshSerializer
|
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer, TokenRefreshSerializer, TokenObtainSerializer
|
||||||
from rest_framework_simplejwt.tokens import RefreshToken
|
from rest_framework_simplejwt.tokens import RefreshToken
|
||||||
from rest_framework_simplejwt.exceptions import TokenError, InvalidToken
|
from rest_framework_simplejwt.exceptions import TokenError, InvalidToken
|
||||||
|
|
||||||
@@ -53,8 +53,12 @@ class JoinAPIView(APIView):
|
|||||||
def post(self, request):
|
def post(self, request):
|
||||||
serializer = JoinSerializer(data=request.data)
|
serializer = JoinSerializer(data=request.data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
user = serializer.save()
|
||||||
res = Response({"message": "회원가입이 완료되었습니다."}, status=status.HTTP_200_OK)
|
access = str(RefreshToken.for_user(user).access_token)
|
||||||
|
res = Response({
|
||||||
|
"message": "회원가입이 완료되었습니다.",
|
||||||
|
"access": access
|
||||||
|
}, status=status.HTTP_200_OK)
|
||||||
return res
|
return res
|
||||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@@ -95,18 +99,22 @@ class LoginAPIView(APIView):
|
|||||||
else: # id, 비번 둘 중 하나가 틀렸을 때
|
else: # id, 비번 둘 중 하나가 틀렸을 때
|
||||||
return Response({"message": "아이디 혹은 비밀번호가 맞지 않습니다."}, status=status.HTTP_400_BAD_REQUEST)
|
return Response({"message": "아이디 혹은 비밀번호가 맞지 않습니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class NicknameAPIView(APIView):
|
class CheckUserFieldDuplicateAPIView(APIView):
|
||||||
permission_classes = [AllowAny]
|
permission_classes = [AllowAny]
|
||||||
# 닉네임 중복 체크
|
# 유저 필드 중복 확인
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
nickname = request.GET.get('nickname', None)
|
field = request.query_params.get('field')
|
||||||
if not nickname:
|
value = request.query_params.get('value')
|
||||||
return Response({"message": "닉네임을 입력하세요."}, status=status.HTTP_400_BAD_REQUEST)
|
if not field or not value:
|
||||||
|
return Response({"message": "올바르지 않은 요청입니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
try:
|
try:
|
||||||
get_object_or_404(User, nickname=nickname)
|
if CheckUserFieldDuplicateService.check_duplicate(field, value):
|
||||||
return Response({"message": "해당 닉네임은 사용할 수 없습니다."}, status=status.HTTP_400_BAD_REQUEST)
|
return Response({"message": f"존재하는 {field} 입니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
except:
|
else:
|
||||||
return Response({"message": "사용할 수 있는 닉네임입니다."}, status=status.HTTP_200_OK)
|
return Response({"message": f"사용해도 되는 {field} 입니다."}, status=status.HTTP_200_OK)
|
||||||
|
except ValueError as e:
|
||||||
|
return Response({"message": str(e)}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
|
||||||
class TagUserAPIView(APIView):
|
class TagUserAPIView(APIView):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|||||||
Reference in New Issue
Block a user