Initial commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.accounts.models import OtpChannel, PhoneOTP
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ["id", "email", "phone_number", "first_name", "last_name", "role", "is_phone_verified"]
|
||||
read_only_fields = ["id", "role", "is_phone_verified"]
|
||||
|
||||
|
||||
class RegisterSerializer(serializers.ModelSerializer):
|
||||
password = serializers.CharField(write_only=True, min_length=8)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ["email", "password", "phone_number", "first_name", "last_name"]
|
||||
|
||||
def create(self, validated_data):
|
||||
return User.objects.create_user(**validated_data)
|
||||
|
||||
|
||||
class OTPRequestSerializer(serializers.Serializer):
|
||||
phone_number = serializers.CharField(max_length=20)
|
||||
channel = serializers.ChoiceField(choices=OtpChannel.choices)
|
||||
|
||||
|
||||
class OTPVerifySerializer(serializers.Serializer):
|
||||
request_id = serializers.UUIDField()
|
||||
code = serializers.CharField(max_length=6)
|
||||
|
||||
|
||||
class OTPStatusSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = PhoneOTP
|
||||
fields = ["id", "phone_number", "channel", "provider", "created_at", "expires_at", "verified_at"]
|
||||
read_only_fields = fields
|
||||
Reference in New Issue
Block a user