56 lines
1.7 KiB
Python
56 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()
|
|
|
|
class Meta:
|
|
model = CustomUser
|
|
fields = ('email',)
|
|
|
|
def validate(self, data):
|
|
user = authenticate(**data)
|
|
if user and user.is_active:
|
|
return user
|
|
raise serializers.ValidationError("Credential Error")
|