uchill/backend/apps/chat/permissions.py

44 lines
1.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
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