From 9228a3851112cbd8515b67fd9b03bea548e9c0bc Mon Sep 17 00:00:00 2001 From: Timofey Date: Fri, 29 Aug 2025 14:56:50 +0300 Subject: [PATCH] docs fix --- backend/api/auth/serializers.py | 37 ++++++++++++++++++++++++++------- backend/api/auth/views.py | 1 - backend/base/settings.py | 18 ++++++++++++++-- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/backend/api/auth/serializers.py b/backend/api/auth/serializers.py index abbda93..3377cb5 100644 --- a/backend/api/auth/serializers.py +++ b/backend/api/auth/serializers.py @@ -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() \ No newline at end of file + message = serializers.CharField( + help_text="Сообщение о успешном выходе", + read_only=True + ) \ No newline at end of file diff --git a/backend/api/auth/views.py b/backend/api/auth/views.py index e329f76..24cfd49 100644 --- a/backend/api/auth/views.py +++ b/backend/api/auth/views.py @@ -26,7 +26,6 @@ class LoginViewSet(AuthBaseViewSet): @extend_schema( summary="Авторизация пользователя", description="Эндпоинт для авторизации пользователя по логину и паролю", - request=LoginRequestSerializer, responses={ 200: OpenApiResponse( response=LoginResponseSerializer, diff --git a/backend/base/settings.py b/backend/base/settings.py index 4869b7b..603fa36 100644 --- a/backend/base/settings.py +++ b/backend/base/settings.py @@ -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 = [