from rest_framework import serializers from django.contrib.auth.password_validation import validate_password from .models import CustomUser, UserProfile class UserProfileSerializer(serializers.ModelSerializer): class Meta: model = UserProfile fields = ['bio', 'timezone', 'created_at', 'updated_at'] class UserRegistrationSerializer(serializers.ModelSerializer): password = serializers.CharField(write_only=True, required=True, validators=[validate_password]) password2 = serializers.CharField(write_only=True, required=True) class Meta: model = CustomUser fields = ('email', 'first_name', 'last_name', 'phone_number', 'password', 'password2') def validate(self, attrs): if attrs['password'] != attrs['password2']: raise serializers.ValidationError({"password": "Password fields didn't match."}) return attrs def create(self, validated_data): validated_data.pop('password2') password = validated_data.pop('password') user = CustomUser.objects.create_user(**validated_data) user.set_password(password) user.is_active = True user.isVerified = False user.save() return user class ForgotPasswordSerializer(serializers.Serializer): email = serializers.EmailField(required=True) class VerifyPasswordResetOTPSerializer(serializers.Serializer): email = serializers.EmailField(required=True) otp = serializers.CharField(required=True, max_length=6) class ResetPasswordSerializer(serializers.Serializer): email = serializers.EmailField(required=True) otp = serializers.CharField(required=True, max_length=6) new_password = serializers.CharField(required=True, write_only=True, validators=[validate_password]) confirm_password = serializers.CharField(required=True, write_only=True) def validate(self, attrs): if attrs['new_password'] != attrs['confirm_password']: raise serializers.ValidationError({"password": "Password fields didn't match."}) return attrs class UserSerializer(serializers.ModelSerializer): class Meta: model = CustomUser fields = ('id', 'email', 'first_name', 'last_name', 'phone_number', 'isVerified', 'date_joined')