Skip to content

Commit 1f5e534

Browse files
committed
Recent tightening up of permissions accidentally shut out admins from some resources.
1 parent 9db8bf3 commit 1f5e534

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

quotas/views.py

+16-14
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,14 @@ def get(self, request, *args, **kwargs):
153153
if project is None:
154154
return HttpResponseNotFound()
155155

156-
collab = CollabService(request, context=kwargs["project_id"])
157-
if (collab.can_view # public collab, or a member of a private collab
158-
and (collab.is_team_member or project.accepted)): # for public collabs, only accepted projects can be viewed
159-
content = self.serializer.serialize(project)
160-
return HttpResponse(content, content_type="application/json; charset=utf-8", status=200)
161-
else:
162-
return json_err(HttpResponseForbidden, "You do not have permission to view this resource.")
156+
if not is_admin(request):
157+
collab = CollabService(request, context=kwargs["project_id"])
158+
if not (collab.can_view # public collab, or a member of a private collab
159+
and (collab.is_team_member or project.accepted)): # for public collabs, only accepted projects can be viewed
160+
return json_err(HttpResponseForbidden, "You do not have permission to view this resource.")
161+
162+
content = self.serializer.serialize(project)
163+
return HttpResponse(content, content_type="application/json; charset=utf-8", status=200)
163164

164165
def put(self, request, *args, **kwargs):
165166
"""Edit a proposal"""
@@ -299,9 +300,10 @@ def get(self, request, *args, **kwargs):
299300
if project is None:
300301
return json_err(HttpResponseNotFound, "No such project")
301302

302-
collab = CollabService(request, context=kwargs["project_id"])
303-
if not collab.is_team_member:
304-
return json_err(HttpResponseForbidden, "You do not have permission to view this resource.")
303+
if not is_admin(request):
304+
collab = CollabService(request, context=kwargs["project_id"])
305+
if not collab.is_team_member:
306+
return json_err(HttpResponseForbidden, "You do not have permission to view this resource.")
305307

306308
quota = self._get_quota(kwargs["quota_id"]) # use project+platform instead of quota id
307309
if quota is None:
@@ -332,10 +334,10 @@ def get(self, request, *args, **kwargs):
332334
project = self._get_project(kwargs["project_id"])
333335
if project is None:
334336
return json_err(HttpResponseNotFound, "No such project")
335-
collab = CollabService(request, context=kwargs["project_id"])
336-
if not collab.is_team_member:
337-
# todo: admins should be able to see quotas even if they are not a member of the collab
338-
return json_err(HttpResponseForbidden, "You do not have permission to view this resource.")
337+
if not is_admin(request):
338+
collab = CollabService(request, context=kwargs["project_id"])
339+
if not collab.is_team_member:
340+
return json_err(HttpResponseForbidden, "You do not have permission to view this resource.")
339341
quotas = Quota.objects.filter(project=project)
340342
content = self.serializer.serialize(quotas)
341343
return HttpResponse(content, content_type="application/json; charset=utf-8", status=200)

0 commit comments

Comments
 (0)