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 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):
"""Reset Password after verification"""

View File

@ -8,7 +8,8 @@ from junior.models import Junior
from account.models import UserProfile, UserPhoneOtp, UserEmailOtp
from django.contrib.auth.models import User
from .serializers import (SuperUserSerializer, GuardianSerializer, JuniorSerializer, EmailVerificationSerializer,
ForgotPasswordSerializer, ResetPasswordSerializer, ChangePasswordSerializer)
ForgotPasswordSerializer, ResetPasswordSerializer, ChangePasswordSerializer,
GoogleSignInSerializer)
from rest_framework_simplejwt.tokens import RefreshToken
from base.messages import ERROR_CODE, SUCCESS_CODE
from guardian.tasks import generate_otp
@ -23,7 +24,23 @@ from templated_email import send_templated_mail
class GoogleLoginAPIViewset(viewsets.ModelViewSet):
"""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):