mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-16 18:36:18 +00:00
jira-15 and email otp validation
This commit is contained in:
@ -135,7 +135,10 @@ class GuardianSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
def get_user_type(self, obj):
|
def get_user_type(self, obj):
|
||||||
"""user type"""
|
"""user type"""
|
||||||
return GUARDIAN
|
email_verified = UserEmailOtp.objects.filter(email=obj.user.username).last()
|
||||||
|
if email_verified and email_verified.user_type != None:
|
||||||
|
return email_verified.user_type
|
||||||
|
return '2'
|
||||||
|
|
||||||
def get_auth(self, obj):
|
def get_auth(self, obj):
|
||||||
"""user email address"""
|
"""user email address"""
|
||||||
@ -172,7 +175,10 @@ class JuniorSerializer(serializers.ModelSerializer):
|
|||||||
return access_token
|
return access_token
|
||||||
|
|
||||||
def get_user_type(self, obj):
|
def get_user_type(self, obj):
|
||||||
return JUNIOR
|
email_verified = UserEmailOtp.objects.filter(email=obj.auth.username).last()
|
||||||
|
if email_verified and email_verified.user_type != None:
|
||||||
|
return email_verified.user_type
|
||||||
|
return '1'
|
||||||
|
|
||||||
def get_auth(self, obj):
|
def get_auth(self, obj):
|
||||||
return obj.auth.username
|
return obj.auth.username
|
||||||
|
@ -14,8 +14,8 @@ router = routers.SimpleRouter()
|
|||||||
router.register('user', UserLogin, basename='user')
|
router.register('user', UserLogin, basename='user')
|
||||||
router.register('admin', UserLogin, basename='admin')
|
router.register('admin', UserLogin, basename='admin')
|
||||||
router.register('google-login', GoogleLoginViewSet, basename='admin')
|
router.register('google-login', GoogleLoginViewSet, basename='admin')
|
||||||
router.register('send-phone-otp', SendPhoneOtp, basename='send-phone-otp')
|
# router.register('send-phone-otp', SendPhoneOtp, basename='send-phone-otp')
|
||||||
router.register('user-phone-verification', UserPhoneVerification, basename='user-phone-verification')
|
# router.register('user-phone-verification', UserPhoneVerification, basename='user-phone-verification')
|
||||||
router.register('user-email-verification', UserEmailVerification, basename='user-email-verification')
|
router.register('user-email-verification', UserEmailVerification, basename='user-email-verification')
|
||||||
router.register('resend-email-otp', ReSendEmailOtp, basename='resend-email-otp')
|
router.register('resend-email-otp', ReSendEmailOtp, basename='resend-email-otp')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from rest_framework import viewsets, status, views
|
from rest_framework import viewsets, status, views
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
import random
|
import random
|
||||||
@ -182,9 +184,16 @@ class ForgotPasswordAPIView(views.APIView):
|
|||||||
'verification_code': verification_code
|
'verification_code': verification_code
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
expiry = datetime.today() + timedelta(days=1)
|
||||||
|
print("expiry===>", expiry, '===>', type(expiry))
|
||||||
user_data, created = UserEmailOtp.objects.get_or_create(email=email)
|
user_data, created = UserEmailOtp.objects.get_or_create(email=email)
|
||||||
|
if created:
|
||||||
|
user_data.expired_at = expiry
|
||||||
|
user_data.save()
|
||||||
if user_data:
|
if user_data:
|
||||||
user_data.otp = verification_code
|
user_data.otp = verification_code
|
||||||
|
user_data.expired_at = expiry
|
||||||
user_data.save()
|
user_data.save()
|
||||||
return custom_response(SUCCESS_CODE['3015'],
|
return custom_response(SUCCESS_CODE['3015'],
|
||||||
response_status=status.HTTP_200_OK)
|
response_status=status.HTTP_200_OK)
|
||||||
@ -246,6 +255,7 @@ class UserLogin(viewsets.ViewSet):
|
|||||||
email_verified = UserEmailOtp.objects.filter(email=username).last()
|
email_verified = UserEmailOtp.objects.filter(email=username).last()
|
||||||
refresh = RefreshToken.for_user(user)
|
refresh = RefreshToken.for_user(user)
|
||||||
access_token = str(refresh.access_token)
|
access_token = str(refresh.access_token)
|
||||||
|
print("email_verified.user_type==>",email_verified.user_type)
|
||||||
data = {"auth_token":access_token, "is_profile_complete": False,
|
data = {"auth_token":access_token, "is_profile_complete": False,
|
||||||
"user_type": email_verified.user_type,
|
"user_type": email_verified.user_type,
|
||||||
}
|
}
|
||||||
@ -292,6 +302,15 @@ class UserEmailVerification(viewsets.ModelViewSet):
|
|||||||
email_data = UserEmailOtp.objects.filter(email=self.request.GET.get('email'),
|
email_data = UserEmailOtp.objects.filter(email=self.request.GET.get('email'),
|
||||||
otp=self.request.GET.get('otp')).last()
|
otp=self.request.GET.get('otp')).last()
|
||||||
if email_data:
|
if email_data:
|
||||||
|
input_datetime_str = str(email_data.expired_at)
|
||||||
|
input_format = "%Y-%m-%d %H:%M:%S.%f%z"
|
||||||
|
output_format = "%Y-%m-%d %H:%M:%S.%f"
|
||||||
|
input_datetime = datetime.strptime(input_datetime_str, input_format)
|
||||||
|
output_datetime_str = input_datetime.strftime(output_format)
|
||||||
|
format_str = "%Y-%m-%d %H:%M:%S.%f"
|
||||||
|
datetime_obj = datetime.strptime(output_datetime_str, format_str)
|
||||||
|
if datetime.today() > datetime_obj:
|
||||||
|
return custom_error_response(ERROR_CODE["2029"], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
email_data.is_verified = True
|
email_data.is_verified = True
|
||||||
email_data.save()
|
email_data.save()
|
||||||
if email_data.user_type == '1':
|
if email_data.user_type == '1':
|
||||||
@ -315,12 +334,19 @@ class UserEmailVerification(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
class ReSendEmailOtp(viewsets.ModelViewSet):
|
class ReSendEmailOtp(viewsets.ModelViewSet):
|
||||||
"""Send otp on phone"""
|
"""Send otp on phone"""
|
||||||
|
serializer_class = EmailVerificationSerializer
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
otp = generate_otp()
|
otp = generate_otp()
|
||||||
if User.objects.filter(email=request.data['email']):
|
if User.objects.filter(email=request.data['email']):
|
||||||
|
expiry = datetime.today() + timedelta(days=1)
|
||||||
|
print("expiry===>", expiry, '===>', type(expiry))
|
||||||
email_data, created = UserEmailOtp.objects.get_or_create(email=request.data['email'])
|
email_data, created = UserEmailOtp.objects.get_or_create(email=request.data['email'])
|
||||||
|
if created:
|
||||||
|
email_data.expired_at = expiry
|
||||||
|
email_data.save()
|
||||||
if email_data:
|
if email_data:
|
||||||
email_data.otp = otp
|
email_data.otp = otp
|
||||||
|
email_data.expired_at = expiry
|
||||||
email_data.save()
|
email_data.save()
|
||||||
send_otp_email(request.data['email'], otp)
|
send_otp_email(request.data['email'], otp)
|
||||||
return custom_response(SUCCESS_CODE['3016'], response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3016'], response_status=status.HTTP_200_OK)
|
||||||
|
@ -51,7 +51,8 @@ ERROR_CODE = {
|
|||||||
"2025": "Invalid input. Expected a list of strings.",
|
"2025": "Invalid input. Expected a list of strings.",
|
||||||
"2026": "New password should not same as old password",
|
"2026": "New password should not same as old password",
|
||||||
"2027": "data should contain `identityToken`",
|
"2027": "data should contain `identityToken`",
|
||||||
"2028": "You are not authorized person to sign up on this platform"
|
"2028": "You are not authorized person to sign up on this platform",
|
||||||
|
"2029": "Validity of otp verification is expired"
|
||||||
}
|
}
|
||||||
SUCCESS_CODE = {
|
SUCCESS_CODE = {
|
||||||
# Success code for password
|
# Success code for password
|
||||||
|
@ -4,6 +4,7 @@ from rest_framework.permissions import IsAuthenticated
|
|||||||
from rest_framework import viewsets, status
|
from rest_framework import viewsets, status
|
||||||
from rest_framework.pagination import PageNumberPagination
|
from rest_framework.pagination import PageNumberPagination
|
||||||
from django.db.models import Max
|
from django.db.models import Max
|
||||||
|
from datetime import datetime, timedelta
|
||||||
"""Import Django app"""
|
"""Import Django app"""
|
||||||
from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer,
|
from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer,
|
||||||
TopJuniorSerializer)
|
TopJuniorSerializer)
|
||||||
@ -30,7 +31,10 @@ class SignupViewset(viewsets.ModelViewSet):
|
|||||||
serializer.save()
|
serializer.save()
|
||||||
"""Generate otp"""
|
"""Generate otp"""
|
||||||
otp = generate_otp()
|
otp = generate_otp()
|
||||||
UserEmailOtp.objects.create(email=request.data['email'], otp=otp, user_type=str(request.data['user_type']))
|
expiry = datetime.today() + timedelta(days=1)
|
||||||
|
print("expiry===>", expiry, '===>', type(expiry))
|
||||||
|
UserEmailOtp.objects.create(email=request.data['email'], otp=otp,
|
||||||
|
user_type=str(request.data['user_type']), expired_at=expiry)
|
||||||
"""Send email to the register user"""
|
"""Send email to the register user"""
|
||||||
send_otp_email(request.data['email'], otp)
|
send_otp_email(request.data['email'], otp)
|
||||||
return custom_response(SUCCESS_CODE['3001'], {"email_otp": otp},
|
return custom_response(SUCCESS_CODE['3001'], {"email_otp": otp},
|
||||||
|
Reference in New Issue
Block a user