This commit is contained in:
Timofey
2025-08-29 14:48:55 +03:00
parent 5a06a625fb
commit 90461b61cc
3 changed files with 23 additions and 12 deletions

View File

@@ -59,4 +59,9 @@ class LoginResponseSerializer(serializers.Serializer):
message = serializers.CharField()
access = serializers.CharField()
refresh = serializers.CharField()
user = UserResponseSerializer()
user = UserResponseSerializer()
class LogoutResponseSerializer(serializers.Serializer):
"""Сериализатор для ответа при выходе из системы"""
message = serializers.CharField()

View File

@@ -11,7 +11,8 @@ from django.contrib.auth.models import User
from .serializers import (
UserResponseSerializer,
LoginRequestSerializer,
LoginResponseSerializer
LoginResponseSerializer,
LogoutResponseSerializer
)
from api.utils.cookies import AuthBaseViewSet
@@ -138,30 +139,35 @@ class LoginViewSet(AuthBaseViewSet):
)
class LogoutView(APIView):
"""ViewSet для выхода из системы"""
"""View для выхода из системы"""
serializer_class = LogoutResponseSerializer
@extend_schema(
summary="Выход из системы",
description="Эндпоинт для выхода из системы, очищает все токены и куки",
description="Эндпоинт для выхода из системы. Очищает JWT токены и сессионные куки.",
responses={
200: OpenApiResponse(
description="Успешный выход",
response=OpenApiTypes.OBJECT,
response=LogoutResponseSerializer,
description="Успешный выход из системы",
examples=[
OpenApiExample(
'Успешный выход',
value={"message": "Logged out"}
value={"message": "Успешный выход из системы"}
)
]
)
}
},
tags=['Аутентификация']
)
def post(self, request):
response = Response({'message': 'Logged out'}, status=status.HTTP_200_OK)
"""Выход из системы с очисткой всех токенов и куки"""
response = Response(
{'message': 'Успешный выход из системы'},
status=status.HTTP_200_OK
)
# чистим куки и sessionID
response.delete_cookie('access_token')
response.delete_cookie('refresh_token')
response.delete_cookie('sessionid')
response.delete_cookie('sessionid')
return response

View File

@@ -73,7 +73,7 @@ INSTALLED_APPS = [
# Настройки OpenAPI
SPECTACULAR_SETTINGS = {
'TITLE': 'AERBIM API',
'DESCRIPTION': 'API для работы с AERBIM',
'DESCRIPTION': 'AERBIM - документация по API',
'VERSION': '1.0.0',
'SERVE_INCLUDE_SCHEMA': False,
'COMPONENT_SPLIT_REQUEST': True,