mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 18:07:02 +00:00
@ -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"""
|
||||
|
@ -5,13 +5,14 @@ from rest_framework.decorators import api_view
|
||||
"""Third party import"""
|
||||
from rest_framework import routers
|
||||
from .views import (UserLogin, SendPhoneOtp, UserPhoneVerification, UserEmailVerification, ReSendEmailOtp,
|
||||
ForgotPasswordAPIView, ResetPasswordAPIView, ChangePasswordAPIView)
|
||||
ForgotPasswordAPIView, ResetPasswordAPIView, ChangePasswordAPIView, GoogleLoginAPIViewset)
|
||||
"""Router"""
|
||||
router = routers.SimpleRouter()
|
||||
|
||||
"""API End points with router"""
|
||||
router.register('user', UserLogin, basename='user')
|
||||
router.register('admin', UserLogin, basename='admin')
|
||||
router.register('google-login', GoogleLoginAPIViewset, basename='admin')
|
||||
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')
|
||||
|
@ -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
|
||||
@ -21,6 +22,26 @@ from rest_framework.response import Response
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from templated_email import send_templated_mail
|
||||
|
||||
class GoogleLoginAPIViewset(viewsets.ModelViewSet):
|
||||
"""Google Login"""
|
||||
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):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
18
guardian/migrations/0003_guardian_country_name.py
Normal file
18
guardian/migrations/0003_guardian_country_name.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2023-06-27 13:59
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('guardian', '0002_remove_guardian_junior_code'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='guardian',
|
||||
name='country_name',
|
||||
field=models.CharField(blank=True, default=None, max_length=30, null=True),
|
||||
),
|
||||
]
|
@ -13,6 +13,7 @@ class Guardian(models.Model):
|
||||
"""Contact details"""
|
||||
country_code = models.IntegerField(blank=True, null=True)
|
||||
phone = models.CharField(max_length=31, null=True, blank=True, default=None)
|
||||
country_name = models.CharField(max_length=30, null=True, blank=True, default=None)
|
||||
"""Personal info"""
|
||||
family_name = models.CharField(max_length=50, null=True, blank=True, default=None)
|
||||
gender = models.CharField(choices=GENDERS, max_length=15, null=True, blank=True, default=None)
|
||||
|
@ -99,6 +99,7 @@ class CreateGuardianSerializer(serializers.ModelSerializer):
|
||||
guardian.phone = validated_data.get('phone', guardian.phone)
|
||||
guardian.country_code = validated_data.get('country_code', guardian.country_code)
|
||||
guardian.passcode = validated_data.get('passcode', guardian.passcode)
|
||||
guardian.country_name = validated_data.get('country_name', guardian.country_name)
|
||||
guardian.referral_code_used = validated_data.get('referral_code_used', guardian.referral_code_used)
|
||||
"""Complete profile of the junior if below all data are filled"""
|
||||
complete_profile_field = all([guardian.phone, guardian.gender, guardian.family_name,
|
||||
|
18
junior/migrations/0002_junior_country_name.py
Normal file
18
junior/migrations/0002_junior_country_name.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2023-06-27 13:59
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('junior', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='junior',
|
||||
name='country_name',
|
||||
field=models.CharField(blank=True, default=None, max_length=30, null=True),
|
||||
),
|
||||
]
|
@ -14,6 +14,7 @@ class Junior(models.Model):
|
||||
"""Contact details"""
|
||||
phone = models.CharField(max_length=31, null=True, blank=True, default=None)
|
||||
country_code = models.IntegerField(blank=True, null=True)
|
||||
country_name = models.CharField(max_length=30, null=True, blank=True, default=None)
|
||||
"""Personal info"""
|
||||
gender = models.CharField(max_length=10, choices=GENDERS, null=True, blank=True, default=None)
|
||||
dob = models.DateField(max_length=15, null=True, blank=True, default=None)
|
||||
|
@ -72,6 +72,7 @@ class CreateJuniorSerializer(serializers.ModelSerializer):
|
||||
junior.guardian_code = validated_data.get('guardian_code', junior.guardian_code)
|
||||
junior.dob = validated_data.get('dob',junior.dob)
|
||||
junior.passcode = validated_data.get('passcode', junior.passcode)
|
||||
junior.country_name = validated_data.get('country_name', junior.country_name)
|
||||
"""Update country code and phone number"""
|
||||
junior.phone = validated_data.get('phone', junior.phone)
|
||||
junior.country_code = validated_data.get('country_code', junior.country_code)
|
||||
|
@ -173,13 +173,19 @@ https://docs.djangoproject.com/en/3.0/howto/static-files/"""
|
||||
|
||||
|
||||
# Email settings
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_PORT = 587
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST_USER = 'infozodbank@gmail.com'
|
||||
# Replace with your Gmail email password or App password
|
||||
EMAIL_HOST_PASSWORD = 'ghwdmznwwslvchga'
|
||||
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
# EMAIL_HOST = 'smtp.gmail.com'
|
||||
# EMAIL_PORT = 587
|
||||
# EMAIL_USE_TLS = True
|
||||
# EMAIL_HOST_USER = 'infozodbank@gmail.com'
|
||||
# # Replace with your Gmail email password or App password
|
||||
# EMAIL_HOST_PASSWORD = 'ghwdmznwwslvchga'
|
||||
|
||||
EMAIL_USE_TLS = os.getenv('EMAIL_USE_TLS')
|
||||
EMAIL_HOST = os.getenv('EMAIL_HOST')
|
||||
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER')
|
||||
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD')
|
||||
EMAIL_PORT = os.getenv('EMAIL_PORT')
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
|
||||
|
Reference in New Issue
Block a user