This commit is contained in:
Timofey
2025-08-29 14:56:50 +03:00
parent 90461b61cc
commit 9228a38511
3 changed files with 46 additions and 10 deletions

View File

@@ -50,18 +50,41 @@ class UserResponseSerializer(serializers.Serializer):
class LoginRequestSerializer(serializers.Serializer):
"""Сериализатор для запроса авторизации"""
login = serializers.CharField(help_text="Логин пользователя")
password = serializers.CharField(help_text="Пароль пользователя", write_only=True)
login = serializers.CharField(
help_text="Логин пользователя",
required=True
)
password = serializers.CharField(
help_text="Пароль пользователя",
write_only=True,
required=True,
style={'input_type': 'password'}
)
class LoginResponseSerializer(serializers.Serializer):
"""Сериализатор для ответа при успешной авторизации"""
message = serializers.CharField()
access = serializers.CharField()
refresh = serializers.CharField()
user = UserResponseSerializer()
message = serializers.CharField(
help_text="Сообщение о успешной авторизации",
read_only=True
)
access = serializers.CharField(
help_text="JWT access token для авторизации запросов",
read_only=True
)
refresh = serializers.CharField(
help_text="JWT refresh token для обновления access token",
read_only=True
)
user = UserResponseSerializer(
help_text="Данные авторизованного пользователя",
read_only=True
)
class LogoutResponseSerializer(serializers.Serializer):
"""Сериализатор для ответа при выходе из системы"""
message = serializers.CharField()
message = serializers.CharField(
help_text="Сообщение о успешном выходе",
read_only=True
)

View File

@@ -26,7 +26,6 @@ class LoginViewSet(AuthBaseViewSet):
@extend_schema(
summary="Авторизация пользователя",
description="Эндпоинт для авторизации пользователя по логину и паролю",
request=LoginRequestSerializer,
responses={
200: OpenApiResponse(
response=LoginResponseSerializer,

View File

@@ -70,14 +70,28 @@ INSTALLED_APPS = [
'drf_spectacular',
]
# Настройки OpenAPI
#!OpenAPI
SPECTACULAR_SETTINGS = {
'TITLE': 'AERBIM API',
'DESCRIPTION': 'AERBIM - документация по API',
'VERSION': '1.0.0',
'SERVE_INCLUDE_SCHEMA': False,
'COMPONENT_SPLIT_REQUEST': True,
'SCHEMA_PATH_PREFIX': '/api/v[0-9]',
'COMPONENT_SPLIT_REQUEST': False, # не создавать автоматически *Request схемы
'COMPONENT_NO_READ_ONLY_REQUIRED': True, # не требовать read_only поля
'COMPONENT_SPLIT_PATCHES': False, # не создавать отдельные схемы для PATCH
# настройки безопасности
'SECURITY': [{'Bearer': []}],
'SWAGGER_UI_SETTINGS': {
'persistAuthorization': True,
},
# сортировка тегов и операций
'TAGS': [
{'name': 'Аутентификация', 'description': 'Методы для работы с аутентификацией'},
],
}
MIDDLEWARE = [