Fixed BasePermission to check object owner and project owner too
parent
14a2d7f283
commit
797e37d3c0
|
@ -27,13 +27,23 @@ class BasePermission(permissions.BasePermission):
|
||||||
path_to_project = []
|
path_to_project = []
|
||||||
|
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
|
# Safe method
|
||||||
if request.method in self.safe_methods:
|
if request.method in self.safe_methods:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# Object owner
|
||||||
|
if getattr(obj, "owner", None) == request.user:
|
||||||
|
return True
|
||||||
|
|
||||||
project_obj = obj
|
project_obj = obj
|
||||||
for attrib in self.path_to_project:
|
for attrib in self.path_to_project:
|
||||||
project_obj = getattr(project_obj, attrib)
|
project_obj = getattr(project_obj, attrib)
|
||||||
|
|
||||||
|
# Project owner
|
||||||
|
if project_obj.owner == request.user:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Members permissions
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
return has_project_perm(request.user, project_obj, self.get_permission)
|
return has_project_perm(request.user, project_obj, self.get_permission)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue