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

@@ -60,3 +60,8 @@ class LoginResponseSerializer(serializers.Serializer):
access = serializers.CharField() access = serializers.CharField()
refresh = 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 ( from .serializers import (
UserResponseSerializer, UserResponseSerializer,
LoginRequestSerializer, LoginRequestSerializer,
LoginResponseSerializer LoginResponseSerializer,
LogoutResponseSerializer
) )
from api.utils.cookies import AuthBaseViewSet from api.utils.cookies import AuthBaseViewSet
@@ -138,28 +139,33 @@ class LoginViewSet(AuthBaseViewSet):
) )
class LogoutView(APIView): class LogoutView(APIView):
"""ViewSet для выхода из системы""" """View для выхода из системы"""
serializer_class = LogoutResponseSerializer
@extend_schema( @extend_schema(
summary="Выход из системы", summary="Выход из системы",
description="Эндпоинт для выхода из системы, очищает все токены и куки", description="Эндпоинт для выхода из системы. Очищает JWT токены и сессионные куки.",
responses={ responses={
200: OpenApiResponse( 200: OpenApiResponse(
description="Успешный выход", response=LogoutResponseSerializer,
response=OpenApiTypes.OBJECT, description="Успешный выход из системы",
examples=[ examples=[
OpenApiExample( OpenApiExample(
'Успешный выход', 'Успешный выход',
value={"message": "Logged out"} value={"message": "Успешный выход из системы"}
) )
] ]
) )
} },
tags=['Аутентификация']
) )
def post(self, request): 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('access_token')
response.delete_cookie('refresh_token') response.delete_cookie('refresh_token')
response.delete_cookie('sessionid') response.delete_cookie('sessionid')

View File

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