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): class LoginRequestSerializer(serializers.Serializer):
"""Сериализатор для запроса авторизации""" """Сериализатор для запроса авторизации"""
login = serializers.CharField(help_text="Логин пользователя") login = serializers.CharField(
password = serializers.CharField(help_text="Пароль пользователя", write_only=True) help_text="Логин пользователя",
required=True
)
password = serializers.CharField(
help_text="Пароль пользователя",
write_only=True,
required=True,
style={'input_type': 'password'}
)
class LoginResponseSerializer(serializers.Serializer): class LoginResponseSerializer(serializers.Serializer):
"""Сериализатор для ответа при успешной авторизации""" """Сериализатор для ответа при успешной авторизации"""
message = serializers.CharField() message = serializers.CharField(
access = serializers.CharField() help_text="Сообщение о успешной авторизации",
refresh = serializers.CharField() read_only=True
user = UserResponseSerializer() )
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): 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( @extend_schema(
summary="Авторизация пользователя", summary="Авторизация пользователя",
description="Эндпоинт для авторизации пользователя по логину и паролю", description="Эндпоинт для авторизации пользователя по логину и паролю",
request=LoginRequestSerializer,
responses={ responses={
200: OpenApiResponse( 200: OpenApiResponse(
response=LoginResponseSerializer, response=LoginResponseSerializer,

View File

@@ -70,14 +70,28 @@ INSTALLED_APPS = [
'drf_spectacular', 'drf_spectacular',
] ]
# Настройки OpenAPI #!OpenAPI
SPECTACULAR_SETTINGS = { SPECTACULAR_SETTINGS = {
'TITLE': 'AERBIM API', 'TITLE': 'AERBIM API',
'DESCRIPTION': 'AERBIM - документация по API', 'DESCRIPTION': 'AERBIM - документация по API',
'VERSION': '1.0.0', 'VERSION': '1.0.0',
'SERVE_INCLUDE_SCHEMA': False, 'SERVE_INCLUDE_SCHEMA': False,
'COMPONENT_SPLIT_REQUEST': True,
'SCHEMA_PATH_PREFIX': '/api/v[0-9]', '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 = [ MIDDLEWARE = [