(add, done): add email smtp service and auth service done!
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user