p00003/accounts/serializers.py
2025-04-15 07:29:49 -04:00

53 lines
1.7 KiB
Python

from rest_framework import serializers
from accounts.models import CustomUser
from django.contrib.auth import authenticate
class CustomUserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ('id', 'username', 'email')
class UserRegistrationSerializer(serializers.ModelSerializer):
password1 = serializers.CharField(write_only=True)
password2 = serializers.CharField(write_only=True)
class Meta:
model = CustomUser
fields = ('id', 'username', 'password1', 'password2', 'email')
extra_kwargs = {'password': {'write_only': True}}
def validate(self, attrs):
if [attrs.password1] != [attrs.password2]:
raise serializers.ValidationError("Passwords must match")
password = attrs.get("password1", "")
if len(password) < 8:
raise serializers.ValidationError(
"Passwords must be at least 8 characters")
return attrs
def create(self, validated_data):
password = validated_data.pop("password1")
validated_data.pop("password2")
return CustomUser.objects.create_user(
password=password,
**validated_data)
# user = RegisteredUser(**validated_data)
# user = set_password(validated_data['password'])
# user.save()
# return user
class UserLoginSerializer(serializers.ModelSerializer):
email = serializers.CharField()
password = serializers.CharField(write_only=True)
def validate(self, data):
user = authenticate(**data)
if user and user.is_active:
return user
raise serializers.ValidationError("Credential Error")