from rest_framework import serializers from django.contrib.auth.password_validation import validate_password from apps.account.models import User class WebUserRegisterSerializer(serializers.ModelSerializer): password = serializers.CharField(write_only=True, validators=[validate_password]) fcm = serializers.CharField(required=False, allow_blank=True, allow_null=True) email = serializers.EmailField() class Meta: model = User fields = ['id', 'fullname', 'email', 'password', 'fcm'] extra_kwargs = { 'fullname': {'required': True}, 'email': {'required': True}, } def validate_email(self, value): normalized_email = User.objects.normalize_email(value) if User.objects.filter(email=normalized_email).exists(): raise serializers.ValidationError("This email is already registered.") return normalized_email def create(self, validated_data): user = super().create(validated_data) return user