Skip to content
Snippets Groups Projects
Commit 9a3a2031 authored by James Graham's avatar James Graham
Browse files

Simplify API permission validators

parent f483035d
No related branches found
No related tags found
1 merge request!60Merge dev pre-hackday
...@@ -3,11 +3,9 @@ from rest_framework import permissions ...@@ -3,11 +3,9 @@ from rest_framework import permissions
from datasources import models from datasources import models
# TODO make permission class factory class BaseUserPermission(permissions.BasePermission):
# TODO write permission tests
class ViewPermission(permissions.BasePermission):
message = 'You do not have permission to access this resource.' message = 'You do not have permission to access this resource.'
permission_level = models.UserPermissionLevels.NONE
def has_object_permission(self, request, view, obj): def has_object_permission(self, request, view, obj):
if not obj.access_control: if not obj.access_control:
...@@ -19,64 +17,27 @@ class ViewPermission(permissions.BasePermission): ...@@ -19,64 +17,27 @@ class ViewPermission(permissions.BasePermission):
datasource=obj datasource=obj
) )
return permission.granted >= models.UserPermissionLevels.VIEW return permission.granted >= self.permission_level
except models.UserPermissionLink.DoesNotExist: except models.UserPermissionLink.DoesNotExist:
return False return False
class MetadataPermission(permissions.BasePermission): class ViewPermission(BaseUserPermission):
message = 'You do not have permission to access the metadata of this resource.' message = 'You do not have permission to access this resource.'
permission_level = models.UserPermissionLevels.VIEW
def has_object_permission(self, request, view, obj):
if not obj.access_control:
return True
try:
permission = models.UserPermissionLink.objects.get(
user=request.user,
datasource=obj
)
return permission.granted >= models.UserPermissionLevels.META
except models.UserPermissionLink.DoesNotExist: class MetadataPermission(BaseUserPermission):
return False message = 'You do not have permission to access the metadata of this resource.'
permission_level = models.UserPermissionLevels.META
class DataPermission(permissions.BasePermission): class DataPermission(BaseUserPermission):
message = 'You do not have permission to access the data of this resource.' message = 'You do not have permission to access the data of this resource.'
permission_level = models.UserPermissionLevels.DATA
def has_object_permission(self, request, view, obj):
if not obj.access_control:
return True
try:
permission = models.UserPermissionLink.objects.get(
user=request.user,
datasource=obj
)
return permission.granted >= models.UserPermissionLevels.DATA
except models.UserPermissionLink.DoesNotExist: class ProvPermission(BaseUserPermission):
return False
class ProvPermission(permissions.BasePermission):
message = 'You do not have permission to access the prov data of this resource.' message = 'You do not have permission to access the prov data of this resource.'
permission_level = models.UserPermissionLevels.PROV
def has_object_permission(self, request, view, obj):
if not obj.access_control:
return True
try:
permission = models.UserPermissionLink.objects.get(
user=request.user,
datasource=obj
)
return permission.granted >= models.UserPermissionLevels.PROV
except models.UserPermissionLink.DoesNotExist:
return False
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment