jira-5 google login

This commit is contained in:
jain
2023-06-27 17:22:59 +05:30
parent 4537f1f4fa
commit 019d028cb6
2 changed files with 34 additions and 2 deletions

View File

@ -13,6 +13,21 @@ from rest_framework.decorators import action
from django.contrib.auth import authenticate, login from django.contrib.auth import authenticate, login
from rest_framework_simplejwt.tokens import RefreshToken from rest_framework_simplejwt.tokens import RefreshToken
class GoogleSignInSerializer(serializers.Serializer):
"""Google login Serializer"""
def create(self, validated_data):
"""Create or update user model"""
with transaction.atomic():
print()
if User.objects.filter(email__iexact=self.validated_data['email']).exists():
return User.objects.get(email__iexact=self.validated_data['email'])
if not User.objects.filter(email__iexact=self.validated_data['email']).exists():
instance = User.objects.create(username=self.validated_data['email'],
email=self.validated_data['email'])
return instance
class ResetPasswordSerializer(serializers.Serializer): class ResetPasswordSerializer(serializers.Serializer):
"""Reset Password after verification""" """Reset Password after verification"""

View File

@ -8,7 +8,8 @@ from junior.models import Junior
from account.models import UserProfile, UserPhoneOtp, UserEmailOtp from account.models import UserProfile, UserPhoneOtp, UserEmailOtp
from django.contrib.auth.models import User from django.contrib.auth.models import User
from .serializers import (SuperUserSerializer, GuardianSerializer, JuniorSerializer, EmailVerificationSerializer, from .serializers import (SuperUserSerializer, GuardianSerializer, JuniorSerializer, EmailVerificationSerializer,
ForgotPasswordSerializer, ResetPasswordSerializer, ChangePasswordSerializer) ForgotPasswordSerializer, ResetPasswordSerializer, ChangePasswordSerializer,
GoogleSignInSerializer)
from rest_framework_simplejwt.tokens import RefreshToken from rest_framework_simplejwt.tokens import RefreshToken
from base.messages import ERROR_CODE, SUCCESS_CODE from base.messages import ERROR_CODE, SUCCESS_CODE
from guardian.tasks import generate_otp from guardian.tasks import generate_otp
@ -23,7 +24,23 @@ from templated_email import send_templated_mail
class GoogleLoginAPIViewset(viewsets.ModelViewSet): class GoogleLoginAPIViewset(viewsets.ModelViewSet):
"""Google Login""" """Google Login"""
serializer_class = SocialSignInSerializer serializer_class = GoogleSignInSerializer
def create(self, request, *args, **kwargs):
"""
Override default behaviour of create method
"""
provider_type = []
serializer = self.get_serializer(data=request.data)
if serializer.is_valid(raise_exception=True):
provider = self.get_provider_view(request.data.get('provider'))
# if User is not authenticated then send error message
if not provider.is_authenticated(request):
return custom_error_response({}, status.HTTP_400_BAD_REQUEST)
user = serializer.save()
if User.objects.filter(email__iexact=user.email).exists():
class ChangePasswordAPIView(views.APIView): class ChangePasswordAPIView(views.APIView):