29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
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)
|
|
}
|