Skip to content

Commit 8709e15

Browse files
authored
fix: Like/Dislike API endpoints still accept cross-client operations. (#7142)
1 parent a4683fc commit 8709e15

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

‎apps/chat/serializers/chat_record.py‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ class VoteSerializer(serializers.Serializer):
4747

4848
chat_record_id = serializers.UUIDField(required=True,
4949
label=_("Conversation record id"))
50+
chat_user_id = serializers.UUIDField(required=True, label=_("Chat User ID"))
51+
52+
def is_valid(self, *, raise_exception=False):
53+
super().is_valid(raise_exception=True)
54+
chat_user_id = self.data.get('chat_user_id')
55+
chat_record_id = self.data.get('chat_record_id')
56+
chat_id = self.data.get('chat_id')
57+
if QuerySet(ChatRecord).filter(chat_id=chat_id, chat_record_id=chat_record_id,
58+
chat__chat_user_id=chat_user_id).exists():
59+
raise AppApiException(500, _('Chat is not exist'))
5060

5161
@transaction.atomic
5262
def vote(self, instance: Dict, with_valid=True):

‎apps/chat/views/chat_record.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ def put(self, request: Request, chat_id: str, chat_record_id: str):
3838
return result.success(VoteSerializer(
3939
data={'application_id': request.auth.application_id,
4040
'chat_id': chat_id,
41-
'chat_record_id': chat_record_id
41+
'chat_record_id': chat_record_id,
42+
'chat_user_id': request.auth.chat_user_id,
4243
}).vote(request.data))
4344

4445

0 commit comments

Comments
 (0)