docs
This commit is contained in:
@@ -59,4 +59,9 @@ class LoginResponseSerializer(serializers.Serializer):
|
|||||||
message = serializers.CharField()
|
message = serializers.CharField()
|
||||||
access = serializers.CharField()
|
access = serializers.CharField()
|
||||||
refresh = serializers.CharField()
|
refresh = serializers.CharField()
|
||||||
user = UserResponseSerializer()
|
user = UserResponseSerializer()
|
||||||
|
|
||||||
|
|
||||||
|
class LogoutResponseSerializer(serializers.Serializer):
|
||||||
|
"""Сериализатор для ответа при выходе из системы"""
|
||||||
|
message = serializers.CharField()
|
||||||
@@ -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,30 +139,35 @@ 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')
|
||||||
|
|
||||||
return response
|
return response
|
||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user