(add, done): add email smtp service and auth service done!

This commit is contained in:
behruz-dev
2025-08-26 11:20:41 +05:00
parent 8feea731b9
commit b46b9975ba
13 changed files with 199 additions and 16 deletions

View File

@@ -3,10 +3,10 @@ from django.db import transaction
from rest_framework import serializers
from core.apps.accounts.models import User
from core.apps.accounts.cache import get_user_credentials
from core.apps.accounts.cache import get_user_credentials, get_user_confirmation_code
class RegisterSerializer(serializers.ModelSerializer):
class RegisterSerializer(serializers.Serializer):
passport_id = serializers.CharField()
pnfl = serializers.CharField()
email = serializers.EmailField()
@@ -15,6 +15,38 @@ class RegisterSerializer(serializers.ModelSerializer):
def validate_email(self, value):
if User.objects.filter(email=value).exists():
raise serializers.ValidationError("User with this email already exists")
if get_user_credentials(value):
user_data = get_user_credentials(email=value)
if user_data:
raise serializers.ValidationError("User with this email already exists")
return value
return value
class ConfirmUserSerializer(serializers.Serializer):
email = serializers.EmailField()
code = serializers.IntegerField()
def validate(self, data):
if User.objects.filter(email=data['email']).exists():
raise serializers.ValidationError('User with this email already exists')
user_data = get_user_credentials(email=data.get('email'))
print(user_data)
if not user_data:
raise serializers.ValidationError("User with this email not found")
confirm_data = get_user_confirmation_code(data['email'], data['code'])
if not confirm_data:
raise serializers.ValidationError("Invalid confirmation code")
data['user_data'] = user_data
return data
def create(self, validated_data):
with transaction.atomic():
user_data = validated_data.get('user_data')
user = User.objects.create(
email=user_data.get('email'),
passport_id=user_data.get('passport_id'),
pnfl=user_data.get('pnfl'),
)
user.set_password(user_data.get('password'))
user.save()
return user