82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
from datetime import datetime, timedelta
|
|
from django.contrib.auth import get_user_model
|
|
from django.shortcuts import render
|
|
from rest_framework.views import APIView
|
|
from rest_framework import serializers
|
|
from apps.user_auth.auth_service import SMSAuth
|
|
from rest_framework.response import Response
|
|
from apps.user_auth.models import SmsOtp as SmsOtpModel
|
|
from apps.user_auth.services import send_otp_code, sms_auth, login_by_user_pass
|
|
from apps.user_auth.token_service import get_refresh_token
|
|
from rest_framework import status
|
|
|
|
from rest_framework import exceptions
|
|
CUserModel = get_user_model()
|
|
|
|
|
|
class MojriByMobileApiView(APIView):
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
mobile = serializers.IntegerField()
|
|
|
|
def post(self, request):
|
|
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
user_mobile = serializer.validated_data.get('mobile', None)
|
|
|
|
send_otp_code(user_mobile=user_mobile)
|
|
|
|
return Response({'status': 'otp code send'}, status=status.HTTP_200_OK)
|
|
|
|
|
|
class MojriMobileVerificationApiView(APIView):
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
mobile = serializers.IntegerField()
|
|
otp_code = serializers.IntegerField()
|
|
|
|
def post(self, request):
|
|
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
token = sms_auth(**serializer.validated_data)
|
|
|
|
return Response(token)
|
|
|
|
|
|
class LoginAdmin(APIView):
|
|
|
|
class InputSerializers(serializers.Serializer):
|
|
username = serializers.CharField(required=True)
|
|
password = serializers.CharField(required=True)
|
|
|
|
def post(self, request):
|
|
serializer = self.InputSerializers(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
token = login_by_user_pass(**serializer.validated_data)
|
|
|
|
return Response(token, status=status.HTTP_200_OK)
|
|
|
|
class CustomRefreshToken(APIView):
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
refresh = serializers.CharField()
|
|
|
|
def post(self, request):
|
|
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
ref_token = serializer.validated_data.get('refresh')
|
|
|
|
token = get_refresh_token(ref_token=ref_token)
|
|
|
|
return Response(token)
|
|
|
|
|
|
|