Skip to content

Commit 6729180

Browse files
committed
Do not allow access to other wg documents. Fixes ietf-tools#558
- Legacy-Id: 2735
1 parent 61697ed commit 6729180

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

ietf/wgchairs/accounts.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def can_do_wg_workflow_in_document(user, document):
2222
person = get_person_for_user(user)
2323
if not person or not document.group:
2424
return False
25-
return can_do_wg_workflow_in_group(document.group)
25+
return can_do_wg_workflow_in_group(document.group.ietfwg)
2626

2727

2828
def can_manage_workflow_in_group(user, group):
@@ -44,3 +44,10 @@ def can_manage_shepherds_in_group(user, group):
4444
if not person:
4545
return False
4646
return is_group_chair(person, group)
47+
48+
49+
def can_manage_shepherd_of_a_document(user, document):
50+
person = get_person_for_user(user)
51+
if not person or not document.group:
52+
return False
53+
return can_manage_shepherds_in_group(user, document.group.ietfwg)

ietf/wgchairs/views.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
from ietf.idtracker.models import IETFWG, InternetDraft, IESGLogin
22
from django.shortcuts import get_object_or_404, render_to_response
33
from django.template import RequestContext
4-
from django.http import HttpResponseForbidden
4+
from django.http import HttpResponseForbidden, Http404
55

66
from ietf.idrfc.views_search import SearchForm, search_query
77
from ietf.wgchairs.forms import (RemoveDelegateForm, add_form_factory,
88
workflow_form_factory, TransitionFormSet)
99
from ietf.wgchairs.accounts import (can_manage_delegates_in_group, get_person_for_user,
1010
can_manage_shepherds_in_group,
11-
can_manage_workflow_in_group)
11+
can_manage_workflow_in_group,
12+
can_manage_shepherd_of_a_document)
1213
from ietf.ietfworkflows.utils import (get_workflow_for_wg,
1314
get_default_workflow_for_wg)
1415

@@ -87,6 +88,8 @@ def managing_shepherd(request, acronym, name):
8788
if not can_manage_shepherds_in_group(user, wg):
8889
return HttpResponseForbidden('You have no permission to access this view')
8990
doc = get_object_or_404(InternetDraft, filename=name)
91+
if not can_manage_shepherd_of_a_document(user, doc):
92+
raise Http404
9093
add_form = add_form_factory(request, wg, user, shepherd=doc)
9194
if request.method == 'POST':
9295
if request.POST.get('remove_shepherd'):

0 commit comments

Comments
 (0)