uchill/backend/apps/video/permissions.py

45 lines
1.6 KiB
Python

"""
Permissions для видео модуля.
"""
from rest_framework import permissions
class IsVideoRoomParticipant(permissions.BasePermission):
"""
Проверка что пользователь - участник видеокомнаты.
"""
message = 'Вы не являетесь участником этой видеокомнаты.'
def has_object_permission(self, request, view, obj):
"""Проверка доступа к объекту."""
# Для VideoRoom
if hasattr(obj, 'mentor') and hasattr(obj, 'client'):
return request.user in [obj.mentor, obj.client]
# Для VideoParticipant
if hasattr(obj, 'room'):
return request.user in [obj.room.mentor, obj.room.client]
return False
class IsMentorOrReadOnly(permissions.BasePermission):
"""
Только ментор может редактировать, остальные - только чтение.
"""
def has_object_permission(self, request, view, obj):
"""Проверка доступа к объекту."""
# Чтение разрешено всем участникам
if request.method in permissions.SAFE_METHODS:
if hasattr(obj, 'room'):
return request.user in [obj.room.mentor, obj.room.client]
return request.user in [obj.mentor, obj.client]
# Редактирование только ментору
if hasattr(obj, 'room'):
return request.user == obj.room.mentor
return request.user == obj.mentor