@@ -8,14 +8,19 @@ from datetime import timedelta
|
||||
# 30일 이전 일수 계산
|
||||
thirty_days_ago = timezone.now() - timedelta(days=30)
|
||||
|
||||
DUPLICATE_CHECK = {
|
||||
'email': 'email',
|
||||
'nickname': 'nickname'
|
||||
}
|
||||
|
||||
class CheckUserFieldDuplicateService:
|
||||
@staticmethod
|
||||
def check_nickname_duplicate(query):
|
||||
pass
|
||||
def check_duplicate(field: str, value: str) -> bool:
|
||||
if field not in DUPLICATE_CHECK:
|
||||
raise ValueError(f"{field}는 지원하지 않는 필드입니다.")
|
||||
|
||||
@staticmethod
|
||||
def check_custom_url_duplicate():
|
||||
pass
|
||||
filter_dict = {DUPLICATE_CHECK[field]:value}
|
||||
return User.objects.filter(**filter_dict).exists()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ urlpatterns = [
|
||||
path('refresh-token/', RefreshAPIView.as_view()),
|
||||
path('join/', JoinAPIView.as_view()),
|
||||
path('login/', LoginAPIView.as_view()),
|
||||
path('check/', NicknameAPIView.as_view()),
|
||||
path('check/', CheckUserFieldDuplicateAPIView.as_view()),
|
||||
path('portfolio-info/', SetPortofolioRequiredInfoAPIView.as_view()),
|
||||
path('portfolio-info/check/', SetPortofolioRequiredInfoAPIView.as_view()),
|
||||
path('teamtag/', TagUserAPIView.as_view()),
|
||||
|
||||
@@ -4,7 +4,7 @@ from django.shortcuts import get_object_or_404
|
||||
|
||||
from rest_framework.views import APIView
|
||||
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.exceptions import TokenError, InvalidToken
|
||||
|
||||
@@ -53,8 +53,12 @@ class JoinAPIView(APIView):
|
||||
def post(self, request):
|
||||
serializer = JoinSerializer(data=request.data)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
res = Response({"message": "회원가입이 완료되었습니다."}, status=status.HTTP_200_OK)
|
||||
user = serializer.save()
|
||||
access = str(RefreshToken.for_user(user).access_token)
|
||||
res = Response({
|
||||
"message": "회원가입이 완료되었습니다.",
|
||||
"access": access
|
||||
}, status=status.HTTP_200_OK)
|
||||
return res
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -95,18 +99,22 @@ class LoginAPIView(APIView):
|
||||
else: # id, 비번 둘 중 하나가 틀렸을 때
|
||||
return Response({"message": "아이디 혹은 비밀번호가 맞지 않습니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class NicknameAPIView(APIView):
|
||||
class CheckUserFieldDuplicateAPIView(APIView):
|
||||
permission_classes = [AllowAny]
|
||||
# 닉네임 중복 체크
|
||||
# 유저 필드 중복 확인
|
||||
def get(self, request):
|
||||
nickname = request.GET.get('nickname', None)
|
||||
if not nickname:
|
||||
return Response({"message": "닉네임을 입력하세요."}, status=status.HTTP_400_BAD_REQUEST)
|
||||
field = request.query_params.get('field')
|
||||
value = request.query_params.get('value')
|
||||
if not field or not value:
|
||||
return Response({"message": "올바르지 않은 요청입니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||
try:
|
||||
get_object_or_404(User, nickname=nickname)
|
||||
return Response({"message": "해당 닉네임은 사용할 수 없습니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||
except:
|
||||
return Response({"message": "사용할 수 있는 닉네임입니다."}, status=status.HTTP_200_OK)
|
||||
if CheckUserFieldDuplicateService.check_duplicate(field, value):
|
||||
return Response({"message": f"존재하는 {field} 입니다."}, status=status.HTTP_400_BAD_REQUEST)
|
||||
else:
|
||||
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):
|
||||
def get(self, request):
|
||||
|
||||
Reference in New Issue
Block a user