""" Permissions для chat модуля. """ from rest_framework import permissions class IsChatParticipant(permissions.BasePermission): """ Проверка что пользователь - участник чата. """ message = 'У вас нет доступа к этому чату.' def has_object_permission(self, request, view, obj): """Проверка доступа к объекту.""" from .models import ChatParticipant return ChatParticipant.objects.filter( chat=obj, user=request.user ).exists() class IsMessageSender(permissions.BasePermission): """ Проверка что пользователь - отправитель сообщения. """ message = 'Вы можете редактировать/удалять только свои сообщения.' def has_object_permission(self, request, view, obj): """Проверка доступа к объекту.""" # Для GET запросов разрешаем всем участникам чата if request.method in permissions.SAFE_METHODS: from .models import ChatParticipant return ChatParticipant.objects.filter( chat=obj.chat, user=request.user ).exists() # Для изменения/удаления только отправителю return obj.sender == request.user