Initial commit
This commit is contained in:
74
core/apps/accounts/serializers/auth.py
Normal file
74
core/apps/accounts/serializers/auth.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from config.env import env
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import exceptions, serializers
|
||||
|
||||
OTP_SIZE = env.int("OTP_SIZE", 4)
|
||||
class LoginSerializer(serializers.Serializer):
|
||||
username = serializers.CharField(max_length=255)
|
||||
password = serializers.CharField(max_length=255)
|
||||
|
||||
|
||||
|
||||
class RegisterSerializer(serializers.ModelSerializer):
|
||||
phone = serializers.CharField(max_length=255)
|
||||
confirm_password = serializers.CharField(max_length=255)
|
||||
|
||||
def validate_phone(self, value):
|
||||
user = get_user_model().objects.filter(phone=value, validated_at__isnull=False)
|
||||
if user.exists():
|
||||
raise exceptions.ValidationError(_("Phone number already registered."), code="unique")
|
||||
return value
|
||||
|
||||
def validate(self, data):
|
||||
if data["password"]!=data["confirm_password"]:
|
||||
raise serializers.ValidationError(
|
||||
{"confirm_password":_("Password do not match.")}
|
||||
)
|
||||
return data
|
||||
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
fields = ["phone", "password", "confirm_password"]
|
||||
extra_kwargs = {
|
||||
"phone": {
|
||||
"required": True,
|
||||
},
|
||||
"password": {"write_only": True},
|
||||
}
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data.pop("confirm_password") # remove it
|
||||
user = get_user_model().objects.create(**validated_data)
|
||||
return user
|
||||
|
||||
|
||||
class ConfirmSerializer(serializers.Serializer):
|
||||
code = serializers.CharField(max_length=OTP_SIZE, min_length=OTP_SIZE)
|
||||
phone = serializers.CharField(max_length=255)
|
||||
|
||||
|
||||
class ResetPasswordSerializer(serializers.Serializer):
|
||||
phone = serializers.CharField(max_length=255)
|
||||
|
||||
def validate_phone(self, value):
|
||||
user = get_user_model().objects.filter(phone=value)
|
||||
if user.exists():
|
||||
return value
|
||||
|
||||
raise serializers.ValidationError(_("User does not exist"))
|
||||
|
||||
|
||||
class ResetConfirmationSerializer(serializers.Serializer):
|
||||
code = serializers.CharField(min_length=OTP_SIZE, max_length=OTP_SIZE)
|
||||
phone = serializers.CharField(max_length=255)
|
||||
|
||||
def validate_phone(self, value):
|
||||
user = get_user_model().objects.filter(phone=value)
|
||||
if user.exists():
|
||||
return value
|
||||
raise serializers.ValidationError(_("User does not exist"))
|
||||
|
||||
|
||||
class ResendSerializer(serializers.Serializer):
|
||||
phone = serializers.CharField(max_length=255)
|
||||
Reference in New Issue
Block a user