change register apis and save user phone in redis
This commit is contained in:
@@ -8,6 +8,8 @@ from rest_framework_simplejwt.tokens import RefreshToken
|
||||
|
||||
from core.apps.accounts.serializers import auth as auth_serializer
|
||||
from core.apps.accounts.models.verification_code import VerificationCode
|
||||
from core.apps.accounts.cache.user import cache_user_credentials, get_user_creadentials
|
||||
from core.apps.accounts.tasks import user as user_tasks
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@@ -26,47 +28,62 @@ class LoginApiView(generics.GenericAPIView):
|
||||
return Response(serializer.errors, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class RegisterApiView(generics.CreateAPIView):
|
||||
class RegisterApiView(generics.GenericAPIView):
|
||||
serializer_class = auth_serializer.RegisterSerializer
|
||||
queryset = User.objects.all()
|
||||
queryset = None
|
||||
permission_classes = []
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
data = serializer.validated_data
|
||||
cache_user_credentials(data['phone'], data['password'], 300)
|
||||
user_tasks.create_and_send_sms_code.delay(data['phone'])
|
||||
return Response(
|
||||
{'success': True, "message": "code send"},
|
||||
status=status.HTTP_200_OK
|
||||
)
|
||||
return Response(
|
||||
{'success': True, "message": serializer.errors},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
|
||||
class ConfirUserApiView(generics.GenericAPIView):
|
||||
serializer_class = auth_serializer.ConfirmUserSerializer
|
||||
queryset = User.objects.all()
|
||||
queryset = None
|
||||
permission_classes = []
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
user = serializer.validated_data.get('user')
|
||||
code = serializer.validated_data.get('code')
|
||||
code = VerificationCode.objects.filter(user=user, code=code).first()
|
||||
if code:
|
||||
if code.is_expired or code.expiration_time < timezone.now().time():
|
||||
return Response({"success": True, "message": "code is expired"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
if code.is_verify:
|
||||
return Response({"success": True, "message": "code is verified"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
user.is_active = True
|
||||
user.save()
|
||||
code.is_verify = True
|
||||
code.is_expired = True
|
||||
code.save()
|
||||
return Response({"success": True, "message": "user activated"}, status=status.HTTP_202_ACCEPTED)
|
||||
return Response({"success": False, "message": "code is wrong"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
phone = serializer.validated_data.get('phone')
|
||||
confirmation = serializer.validated_data.get('confirmation')
|
||||
data = get_user_creadentials(phone)
|
||||
if not data:
|
||||
return Response(
|
||||
{'success': True, "message": 'not found'},
|
||||
status=status.HTTP_404_NOT_FOUND
|
||||
)
|
||||
user = User.objects.create_user(phone=data['phone'], password=data['password'])
|
||||
confirmation.is_verify = True
|
||||
confirmation.save()
|
||||
token = RefreshToken.for_user(user)
|
||||
return Response(
|
||||
{"access": str(token.access_token), "refresh": str(token)},
|
||||
status=status.HTTP_202_ACCEPTED
|
||||
)
|
||||
return Response({"success": False, "message": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class ChoiceUserRoleApiView(generics.GenericAPIView):
|
||||
serializer_class = auth_serializer.ChoiseRoleSerializer
|
||||
queryset = User.objects.all()
|
||||
permission_classes = []
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
user = serializer.validated_data.get('user')
|
||||
user = request.user
|
||||
role = serializer.validated_data.get('role')
|
||||
user.role = role
|
||||
user.save()
|
||||
@@ -77,15 +94,13 @@ class ChoiceUserRoleApiView(generics.GenericAPIView):
|
||||
class CompliteUserProfileApiView(generics.GenericAPIView):
|
||||
serializer_class = auth_serializer.CompliteUserProfileSerializer
|
||||
queryset = User.objects.all()
|
||||
permission_classes = []
|
||||
|
||||
def put(self, request, phone):
|
||||
user = User.objects.filter(phone=phone, is_active=True).first()
|
||||
def put(self, request):
|
||||
user = request.user
|
||||
if user:
|
||||
serializer = self.serializer_class(data=request.data, instance=user)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
token = RefreshToken.for_user(user)
|
||||
return Response({'access_token': str(token.access_token), "refresh_token": str(token), "role": user.role}, status=status.HTTP_200_OK)
|
||||
return Response({'success': True, "message": "Ok"}, status=status.HTTP_200_OK)
|
||||
return Response({'success': False, 'message': serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({'success': False, "message": "User not found"}, status=status.HTTP_404_NOT_FOUND)
|
||||
Reference in New Issue
Block a user