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):
|
||||
"""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):
|
||||
"""user email address"""
|
||||
@ -172,7 +175,10 @@ class JuniorSerializer(serializers.ModelSerializer):
|
||||
return access_token
|
||||
|
||||
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):
|
||||
return obj.auth.username
|
||||
|
@ -14,8 +14,8 @@ router = routers.SimpleRouter()
|
||||
router.register('user', UserLogin, basename='user')
|
||||
router.register('admin', UserLogin, basename='admin')
|
||||
router.register('google-login', GoogleLoginViewSet, basename='admin')
|
||||
router.register('send-phone-otp', SendPhoneOtp, basename='send-phone-otp')
|
||||
router.register('user-phone-verification', UserPhoneVerification, basename='user-phone-verification')
|
||||
# router.register('send-phone-otp', SendPhoneOtp, basename='send-phone-otp')
|
||||
# router.register('user-phone-verification', UserPhoneVerification, basename='user-phone-verification')
|
||||
router.register('user-email-verification', UserEmailVerification, basename='user-email-verification')
|
||||
router.register('resend-email-otp', ReSendEmailOtp, basename='resend-email-otp')
|
||||
urlpatterns = [
|
||||
|
@ -1,3 +1,5 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from rest_framework import viewsets, status, views
|
||||
from rest_framework.decorators import action
|
||||
import random
|
||||
@ -182,9 +184,16 @@ class ForgotPasswordAPIView(views.APIView):
|
||||
'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)
|
||||
if created:
|
||||
user_data.expired_at = expiry
|
||||
user_data.save()
|
||||
if user_data:
|
||||
user_data.otp = verification_code
|
||||
user_data.expired_at = expiry
|
||||
user_data.save()
|
||||
return custom_response(SUCCESS_CODE['3015'],
|
||||
response_status=status.HTTP_200_OK)
|
||||
@ -246,6 +255,7 @@ class UserLogin(viewsets.ViewSet):
|
||||
email_verified = UserEmailOtp.objects.filter(email=username).last()
|
||||
refresh = RefreshToken.for_user(user)
|
||||
access_token = str(refresh.access_token)
|
||||
print("email_verified.user_type==>",email_verified.user_type)
|
||||
data = {"auth_token":access_token, "is_profile_complete": False,
|
||||
"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'),
|
||||
otp=self.request.GET.get('otp')).last()
|
||||
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.save()
|
||||
if email_data.user_type == '1':
|
||||
@ -315,12 +334,19 @@ class UserEmailVerification(viewsets.ModelViewSet):
|
||||
|
||||
class ReSendEmailOtp(viewsets.ModelViewSet):
|
||||
"""Send otp on phone"""
|
||||
serializer_class = EmailVerificationSerializer
|
||||
def create(self, request, *args, **kwargs):
|
||||
otp = generate_otp()
|
||||
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'])
|
||||
if created:
|
||||
email_data.expired_at = expiry
|
||||
email_data.save()
|
||||
if email_data:
|
||||
email_data.otp = otp
|
||||
email_data.expired_at = expiry
|
||||
email_data.save()
|
||||
send_otp_email(request.data['email'], otp)
|
||||
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.",
|
||||
"2026": "New password should not same as old password",
|
||||
"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 for password
|
||||
|
@ -4,6 +4,7 @@ from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework import viewsets, status
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
from django.db.models import Max
|
||||
from datetime import datetime, timedelta
|
||||
"""Import Django app"""
|
||||
from .serializers import (UserSerializer, CreateGuardianSerializer, TaskSerializer, TaskDetailsSerializer,
|
||||
TopJuniorSerializer)
|
||||
@ -30,7 +31,10 @@ class SignupViewset(viewsets.ModelViewSet):
|
||||
serializer.save()
|
||||
"""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_otp_email(request.data['email'], otp)
|
||||
return custom_response(SUCCESS_CODE['3001'], {"email_otp": otp},
|
||||
|
Reference in New Issue
Block a user