Files
LibraryApp/backend/apps/authentication/serializers.py
2026-03-17 20:42:58 +01:00

39 lines
1.1 KiB
Python

from django.contrib.auth.password_validation import validate_password as django_validate_password
from django.core.exceptions import ValidationError
from rest_framework import serializers
from apps.user.models import User
from apps.tasks import send_email
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["username", "email", "password"]
extra_kwargs = {
"password": {"write_only": True}
}
def validate_email(self, value):
if User.objects.filter(email=value).exists():
raise serializers.ValidationError("Email already taken")
return value
def validate_password(self, value):
try:
django_validate_password(value)
except ValidationError as error:
raise serializers.ValidationError(error.messages)
return value
def create(self, validated_data):
user = User.objects.create_user(
validated_data["username"],
validated_data["email"],
validated_data["password"]
)
send_email.delay(user.pk)
return user