movie-night-api/users/serializers.py

40 lines
1.1 KiB
Python
Raw Normal View History

2025-03-30 00:57:14 -05:00
from django.contrib.auth import authenticate
from rest_framework import serializers
from django.contrib.auth.models import User, Group
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ["url", "username", "email", "password", "groups"]
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ["url", "name"]
class AuthSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField(
style={"input_type": "password"}, trim_whitespace=False
)
def validate(self, attrs):
username = attrs.get("username")
password = attrs.get("password")
user = authenticate(
request=self.context.get("request"),
username=username,
password=password,
)
if not user:
msg = f"Invalid username or password."
raise serializers.ValidationError(msg, code="authentication")
attrs["user"] = user
return