feature(chat): adding authentication

adding authentication
This commit is contained in:
Haydar Ghasemi 2026-09-06 19:55:37 +03:30
parent 9d9727008a
commit 3e81a0a0f1
6 changed files with 45 additions and 19 deletions

View file

@ -83,9 +83,10 @@ def test_user_conversation_list_view_enriches_participants_once_per_page(
# ConversationService/MessageService/ReadStateService are mocked at the # ConversationService/MessageService/ReadStateService are mocked at the
# class level so this stays a unit test of the participants_info wiring # class level so this stays a unit test of the participants_info wiring
# and never opens a real connection to Mattermost. # and never opens a real connection to Mattermost.
from rest_framework.test import APIRequestFactory from rest_framework.test import APIRequestFactory, force_authenticate
from apps.chat.views.conversations import UserConversationListView from apps.chat.views.conversations import UserConversationListView
from apps.users.models import User
user_1, user_2 = uuid.uuid4(), uuid.uuid4() user_1, user_2 = uuid.uuid4(), uuid.uuid4()
mock_bulk.return_value = { mock_bulk.return_value = {
@ -102,6 +103,7 @@ def test_user_conversation_list_view_enriches_participants_once_per_page(
mock_read_svc_cls.return_value.has_unread.return_value = False mock_read_svc_cls.return_value.has_unread.return_value = False
request = APIRequestFactory().get(f"/api/users/{user_1}/chats/") request = APIRequestFactory().get(f"/api/users/{user_1}/chats/")
force_authenticate(request, user=User.objects.create_user(pk=uuid.uuid4()))
response = UserConversationListView.as_view()(request, user_uuid=user_1) response = UserConversationListView.as_view()(request, user_uuid=user_1)
assert response.status_code == 200 assert response.status_code == 200

View file

@ -17,11 +17,14 @@ from apps.chat.services.account import AccountService
from apps.chat.services.conversation import ConversationService from apps.chat.services.conversation import ConversationService
from apps.chat.services.message import MessageService from apps.chat.services.message import MessageService
from apps.chat.services.read_state import ReadStateService from apps.chat.services.read_state import ReadStateService
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
class ConversationCreateView(APIView): class ConversationCreateView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"POST": [[]],
}
@extend_schema( @extend_schema(
request=CreateConversationSerializer, request=CreateConversationSerializer,
@ -45,8 +48,10 @@ class ConversationCreateView(APIView):
class UserConversationListView(APIView): class UserConversationListView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"GET": [[]],
}
@extend_schema( @extend_schema(
parameters=[ parameters=[
@ -117,8 +122,10 @@ class UserConversationListView(APIView):
class ConversationCloseView(APIView): class ConversationCloseView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"POST": [[]],
}
@extend_schema( @extend_schema(
request=ConversationUserActionSerializer, request=ConversationUserActionSerializer,
@ -136,8 +143,10 @@ class ConversationCloseView(APIView):
class ConversationReopenView(APIView): class ConversationReopenView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"POST": [[]],
}
@extend_schema( @extend_schema(
request=ConversationUserActionSerializer, request=ConversationUserActionSerializer,

View file

@ -8,11 +8,15 @@ from rest_framework.views import APIView
from apps.chat.exceptions import ConversationClosedError from apps.chat.exceptions import ConversationClosedError
from apps.chat.serializers.messages import MessageSerializer, SendMessageSerializer from apps.chat.serializers.messages import MessageSerializer, SendMessageSerializer
from apps.chat.services.message import MessageService from apps.chat.services.message import MessageService
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
class MessageView(APIView): class MessageView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"GET": [[]],
"POST": [[]],
}
@extend_schema( @extend_schema(
request=SendMessageSerializer, request=SendMessageSerializer,

View file

@ -5,11 +5,14 @@ from rest_framework.viewsets import GenericViewSet
from apps.chat.serializers.presign import PresignResultSerializer, SignContentSerializer from apps.chat.serializers.presign import PresignResultSerializer, SignContentSerializer
from apps.chat.services.storage import StorageService from apps.chat.services.storage import StorageService
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
class PresignViewSet(GenericViewSet): class PresignViewSet(GenericViewSet):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"POST": [[]],
}
serializer_class = SignContentSerializer serializer_class = SignContentSerializer
@extend_schema( @extend_schema(

View file

@ -10,11 +10,14 @@ from rest_framework.views import APIView
from apps.chat.serializers.messages import MessageSerializer from apps.chat.serializers.messages import MessageSerializer
from apps.chat.serializers.read_state import MarkReadSerializer, ReadStateSerializer from apps.chat.serializers.read_state import MarkReadSerializer, ReadStateSerializer
from apps.chat.services.read_state import ReadStateService from apps.chat.services.read_state import ReadStateService
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
class ReadStateView(APIView): class ReadStateView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"POST": [[]],
}
@extend_schema( @extend_schema(
request=MarkReadSerializer, request=MarkReadSerializer,
@ -43,8 +46,10 @@ class ReadStateView(APIView):
class ChatEventsView(APIView): class ChatEventsView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"GET": [[]],
}
@extend_schema( @extend_schema(
responses={200: MessageSerializer(many=True)}, responses={200: MessageSerializer(many=True)},

View file

@ -7,11 +7,14 @@ from rest_framework.views import APIView
from apps.chat.serializers.reports import CreateReportSerializer, ReportSerializer from apps.chat.serializers.reports import CreateReportSerializer, ReportSerializer
from apps.chat.services.report import ReportService from apps.chat.services.report import ReportService
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
class ConversationReportView(APIView): class ConversationReportView(APIView):
authentication_classes = [] permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
permission_classes = [] required_alternate_scopes = {
"POST": [[]],
}
@extend_schema( @extend_schema(
request=CreateReportSerializer, request=CreateReportSerializer,