backend/users/serializers.py

29 lines
1.1 KiB
Python
Raw Normal View History

2025-03-23 21:24:08 +10:00
from rest_framework import serializers
from django.contrib.auth.models import User
from rest_framework_simplejwt.tokens import RefreshToken
class UserLoginSerializer(serializers.Serializer):
username = serializers.CharField()
profile_name = serializers.SerializerMethodField() # Добавляем поле для профиля
password = serializers.CharField(write_only=True)
def get_profile_name(self, user):
return f"{user.first_name} {user.last_name}".strip() or user.username # Если имя пустое, используем username
def validate(self, data):
from django.contrib.auth import authenticate
user = authenticate(username=data["username"], password=data["password"])
if not user:
raise serializers.ValidationError("Неверный логин или пароль")
refresh = RefreshToken.for_user(user)
return {
"username": user.username,
"profile": self.get_profile_name(user), # Возвращаем профильное имя
"access": str(refresh.access_token),
"refresh": str(refresh)
}