mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 18:07:02 +00:00
jira-25 access token API
This commit is contained in:
@ -125,12 +125,17 @@ class GuardianSerializer(serializers.ModelSerializer):
|
|||||||
first_name = serializers.SerializerMethodField('get_first_name')
|
first_name = serializers.SerializerMethodField('get_first_name')
|
||||||
last_name = serializers.SerializerMethodField('get_last_name')
|
last_name = serializers.SerializerMethodField('get_last_name')
|
||||||
auth_token = serializers.SerializerMethodField('get_auth_token')
|
auth_token = serializers.SerializerMethodField('get_auth_token')
|
||||||
|
refresh_token = serializers.SerializerMethodField('get_refresh_token')
|
||||||
|
|
||||||
def get_auth_token(self, obj):
|
def get_auth_token(self, obj):
|
||||||
refresh = RefreshToken.for_user(obj.user)
|
refresh = RefreshToken.for_user(obj.user)
|
||||||
access_token = str(refresh.access_token)
|
access_token = str(refresh.access_token)
|
||||||
return access_token
|
return access_token
|
||||||
|
|
||||||
|
def get_refresh_token(self, obj):
|
||||||
|
refresh = RefreshToken.for_user(obj.user)
|
||||||
|
refresh_token = str(refresh)
|
||||||
|
return refresh_token
|
||||||
|
|
||||||
def get_user_type(self, obj):
|
def get_user_type(self, obj):
|
||||||
"""user type"""
|
"""user type"""
|
||||||
@ -154,9 +159,9 @@ class GuardianSerializer(serializers.ModelSerializer):
|
|||||||
class Meta(object):
|
class Meta(object):
|
||||||
"""Meta info"""
|
"""Meta info"""
|
||||||
model = Guardian
|
model = Guardian
|
||||||
fields = ['id', 'auth_token', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'family_name',
|
fields = ['id', 'auth_token', 'refresh_token', 'email', 'first_name', 'last_name', 'country_code',
|
||||||
'gender', 'dob', 'referral_code', 'is_active', 'is_complete_profile', 'passcode', 'image',
|
'phone', 'family_name', 'gender', 'dob', 'referral_code', 'is_active',
|
||||||
'created_at', 'updated_at', 'user_type', 'country_name']
|
'is_complete_profile', 'passcode', 'image', 'created_at', 'updated_at', 'user_type', 'country_name']
|
||||||
|
|
||||||
|
|
||||||
class JuniorSerializer(serializers.ModelSerializer):
|
class JuniorSerializer(serializers.ModelSerializer):
|
||||||
@ -166,15 +171,21 @@ class JuniorSerializer(serializers.ModelSerializer):
|
|||||||
first_name = serializers.SerializerMethodField('get_first_name')
|
first_name = serializers.SerializerMethodField('get_first_name')
|
||||||
last_name = serializers.SerializerMethodField('get_last_name')
|
last_name = serializers.SerializerMethodField('get_last_name')
|
||||||
auth_token = serializers.SerializerMethodField('get_auth_token')
|
auth_token = serializers.SerializerMethodField('get_auth_token')
|
||||||
|
refresh_token = serializers.SerializerMethodField('get_refresh_token')
|
||||||
|
|
||||||
def get_auth_token(self, obj):
|
def get_auth_token(self, obj):
|
||||||
refresh = RefreshToken.for_user(obj.auth)
|
refresh = RefreshToken.for_user(obj.auth)
|
||||||
access_token = str(refresh.access_token)
|
access_token = str(refresh.access_token)
|
||||||
return access_token
|
return access_token
|
||||||
|
|
||||||
|
def get_refresh_token(self, obj):
|
||||||
|
refresh = RefreshToken.for_user(obj.user)
|
||||||
|
refresh_token = str(refresh)
|
||||||
|
return refresh_token
|
||||||
|
|
||||||
def get_user_type(self, obj):
|
def get_user_type(self, obj):
|
||||||
email_verified = UserEmailOtp.objects.filter(email=obj.auth.username).last()
|
email_verified = UserEmailOtp.objects.filter(email=obj.auth.username).last()
|
||||||
if email_verified and email_verified.user_type != None:
|
if email_verified and email_verified.user_type is not None:
|
||||||
return email_verified.user_type
|
return email_verified.user_type
|
||||||
return '1'
|
return '1'
|
||||||
|
|
||||||
@ -190,9 +201,9 @@ class JuniorSerializer(serializers.ModelSerializer):
|
|||||||
class Meta(object):
|
class Meta(object):
|
||||||
"""Meta info"""
|
"""Meta info"""
|
||||||
model = Junior
|
model = Junior
|
||||||
fields = ['id', 'auth_token', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'gender', 'dob',
|
fields = ['id', 'auth_token', 'refresh_token', 'email', 'first_name', 'last_name', 'country_code',
|
||||||
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
'phone', 'gender', 'dob', 'guardian_code', 'referral_code','is_active',
|
||||||
'updated_at', 'user_type', 'country_name','is_invited']
|
'is_complete_profile', 'created_at', 'image', 'updated_at', 'user_type', 'country_name','is_invited']
|
||||||
|
|
||||||
class EmailVerificationSerializer(serializers.ModelSerializer):
|
class EmailVerificationSerializer(serializers.ModelSerializer):
|
||||||
"""Email verification serializer"""
|
"""Email verification serializer"""
|
||||||
|
@ -8,7 +8,7 @@ from .views import (UserLogin, SendPhoneOtp, UserPhoneVerification, UserEmailVer
|
|||||||
ForgotPasswordAPIView, ResetPasswordAPIView, ChangePasswordAPIView, UpdateProfileImage,
|
ForgotPasswordAPIView, ResetPasswordAPIView, ChangePasswordAPIView, UpdateProfileImage,
|
||||||
GoogleLoginViewSet, SigninWithApple, ProfileAPIViewSet, UploadImageAPIViewSet,
|
GoogleLoginViewSet, SigninWithApple, ProfileAPIViewSet, UploadImageAPIViewSet,
|
||||||
DefaultImageAPIViewSet, DeleteUserProfileAPIViewSet, UserNotificationAPIViewSet,
|
DefaultImageAPIViewSet, DeleteUserProfileAPIViewSet, UserNotificationAPIViewSet,
|
||||||
UpdateUserNotificationAPIViewSet, SendSupportEmail, LogoutAPIView)
|
UpdateUserNotificationAPIViewSet, SendSupportEmail, LogoutAPIView, AccessTokenAPIView)
|
||||||
"""Router"""
|
"""Router"""
|
||||||
router = routers.SimpleRouter()
|
router = routers.SimpleRouter()
|
||||||
|
|
||||||
@ -45,5 +45,6 @@ urlpatterns = [
|
|||||||
path('api/v1/update-profile-image/', UpdateProfileImage.as_view()),
|
path('api/v1/update-profile-image/', UpdateProfileImage.as_view()),
|
||||||
path('api/v1/apple-login/', SigninWithApple.as_view(), name='signup_with_apple'),
|
path('api/v1/apple-login/', SigninWithApple.as_view(), name='signup_with_apple'),
|
||||||
path('api/v1/send-support-email/', SendSupportEmail.as_view(), name='send-support-email'),
|
path('api/v1/send-support-email/', SendSupportEmail.as_view(), name='send-support-email'),
|
||||||
path('api/v1/logout/', LogoutAPIView.as_view(), name='logout')
|
path('api/v1/logout/', LogoutAPIView.as_view(), name='logout'),
|
||||||
|
path('api/v1/generate-token/', AccessTokenAPIView.as_view(), name='generate-token')
|
||||||
]
|
]
|
||||||
|
@ -37,6 +37,7 @@ from rest_framework import status
|
|||||||
import requests
|
import requests
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from rest_framework_simplejwt.tokens import RefreshToken
|
||||||
from junior.serializers import JuniorProfileSerializer
|
from junior.serializers import JuniorProfileSerializer
|
||||||
from guardian.serializers import GuardianProfileSerializer
|
from guardian.serializers import GuardianProfileSerializer
|
||||||
|
|
||||||
@ -302,7 +303,8 @@ 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)
|
||||||
data = {"auth_token":access_token, "is_profile_complete": False,
|
refresh_token = str(refresh)
|
||||||
|
data = {"auth_token":access_token, "refresh_token":refresh_token, "is_profile_complete": False,
|
||||||
"user_type": email_verified.user_type,
|
"user_type": email_verified.user_type,
|
||||||
}
|
}
|
||||||
is_verified = False
|
is_verified = False
|
||||||
@ -336,7 +338,8 @@ class UserLogin(viewsets.ViewSet):
|
|||||||
logging.error(e)
|
logging.error(e)
|
||||||
refresh = RefreshToken.for_user(user)
|
refresh = RefreshToken.for_user(user)
|
||||||
access_token = str(refresh.access_token)
|
access_token = str(refresh.access_token)
|
||||||
data = {"auth_token": access_token, "user_role": '3'}
|
refresh_token = str(refresh)
|
||||||
|
data = {"auth_token": access_token, "refresh_token":refresh_token, "user_type": '3'}
|
||||||
return custom_response(None, data, response_status=status.HTTP_200_OK)
|
return custom_response(None, data, response_status=status.HTTP_200_OK)
|
||||||
|
|
||||||
class UserEmailVerification(viewsets.ModelViewSet):
|
class UserEmailVerification(viewsets.ModelViewSet):
|
||||||
@ -373,7 +376,8 @@ class UserEmailVerification(viewsets.ModelViewSet):
|
|||||||
guardian_data.save()
|
guardian_data.save()
|
||||||
refresh = RefreshToken.for_user(user_obj)
|
refresh = RefreshToken.for_user(user_obj)
|
||||||
access_token = str(refresh.access_token)
|
access_token = str(refresh.access_token)
|
||||||
return custom_response(SUCCESS_CODE['3011'], {"auth_token":access_token},
|
refresh_token = str(refresh)
|
||||||
|
return custom_response(SUCCESS_CODE['3011'], {"auth_token":access_token, "refresh_token":refresh_token},
|
||||||
response_status=status.HTTP_200_OK)
|
response_status=status.HTTP_200_OK)
|
||||||
else:
|
else:
|
||||||
return custom_error_response(ERROR_CODE["2008"], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE["2008"], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
@ -521,3 +525,17 @@ class LogoutAPIView(views.APIView):
|
|||||||
logout(request)
|
logout(request)
|
||||||
request.session.flush()
|
request.session.flush()
|
||||||
return custom_response(SUCCESS_CODE['3020'], response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3020'], response_status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class AccessTokenAPIView(views.APIView):
|
||||||
|
"""generate access token API"""
|
||||||
|
|
||||||
|
def post(self, request):
|
||||||
|
# Assuming you have a refresh_token string
|
||||||
|
refresh_token = request.data['refresh_token']
|
||||||
|
# Create a RefreshToken instance from the refresh token string
|
||||||
|
refresh = RefreshToken(refresh_token)
|
||||||
|
# Generate a new access token
|
||||||
|
access_token = str(refresh.access_token)
|
||||||
|
data = {"auth_token": access_token}
|
||||||
|
return custom_response(None, data, response_status=status.HTTP_200_OK)
|
||||||
|
@ -97,8 +97,8 @@ REST_FRAMEWORK = {
|
|||||||
'PAGE_SIZE': 5,
|
'PAGE_SIZE': 5,
|
||||||
}
|
}
|
||||||
SIMPLE_JWT = {
|
SIMPLE_JWT = {
|
||||||
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=50),
|
'ACCESS_TOKEN_LIFETIME': timedelta(hours=2, minutes=59, seconds=59, microseconds=999999),
|
||||||
'REFRESH_TOKEN_LIFETIME': timedelta(days=7),
|
'REFRESH_TOKEN_LIFETIME': timedelta(hours=71, minutes=59, seconds=59, microseconds=999999),
|
||||||
}
|
}
|
||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
||||||
|
Reference in New Issue
Block a user