Files
mayan-edms/mayan/apps/rest_api/permissions.py
Roberto Rosario 8e731d6280 Backport ACL computation improvements
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-04 03:27:30 -04:00

48 lines
1.4 KiB
Python

from __future__ import absolute_import
from __future__ import unicode_literals
from django.core.exceptions import PermissionDenied
from rest_framework.permissions import BasePermission
from mayan.apps.acls.models import AccessControlList
from mayan.apps.permissions import Permission
class MayanPermission(BasePermission):
def has_permission(self, request, view):
required_permissions = getattr(
view, 'mayan_view_permissions', {}
).get(request.method, None)
if required_permissions:
try:
Permission.check_user_permissions(
permissions=required_permissions, user=request.user
)
except PermissionDenied:
return False
else:
return True
else:
return True
def has_object_permission(self, request, view, obj):
required_permissions = getattr(
view, 'mayan_object_permissions', {}
).get(request.method, None)
if required_permissions:
try:
AccessControlList.objects.check_access(
obj=obj, permissions=required_permissions,
user=request.user
)
except PermissionDenied:
return False
else:
return True
else:
return True