Skip to content

Commit 8ee892e

Browse files
author
Richard Jones
committed
merge from HEAD
1 parent 865e515 commit 8ee892e

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Fixed:
77
- fix API for templating utils extensions - remove "utils" arg (sf bug 1081981)
88
- back_sqlite.py is missing "import time" (sf bug 1081959)
99
- fix (list) popup (sf bug 1083570)
10+
- fix some security assertions (sf bug 1085481)
1011

1112

1213
2004-12-08 0.8.0b1

roundup/cgi/actions.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#$Id: actions.py,v 1.40 2004-11-23 22:45:13 richard Exp $
1+
#$Id: actions.py,v 1.40.2.1 2004-12-15 00:03:36 richard Exp $
22

33
import re, cgi, StringIO, urllib, Cookie, time, random
44

@@ -59,12 +59,12 @@ def permission(self):
5959
'%(action)s the %(classname)s class.')%info
6060

6161
_marker = []
62-
def hasPermission(self, permission, classname=_marker):
62+
def hasPermission(self, permission, classname=_marker, itemid=None):
6363
"""Check whether the user has 'permission' on the current class."""
6464
if classname is self._marker:
6565
classname = self.client.classname
6666
return self.db.security.hasPermission(permission, self.client.userid,
67-
classname)
67+
classname=classname, itemid=itemid)
6868

6969
def gettext(self, msgid):
7070
"""Return the localized translation of msgid"""
@@ -158,9 +158,16 @@ def handle(self):
158158
# edit the old way, only one query per name
159159
try:
160160
qid = self.db.query.lookup(queryname)
161+
if not self.hasPermission('Edit', self.classname,
162+
itemid=qid):
163+
raise exceptions.Unauthorised, self._(
164+
"You do not have permission to edit queries")
161165
self.db.query.set(qid, klass=self.classname, url=url)
162166
except KeyError:
163167
# create a query
168+
if not self.hasPermission('Create', self.classname):
169+
raise exceptions.Unauthorised, self._(
170+
"You do not have permission to store queries")
164171
qid = self.db.query.create(name=queryname,
165172
klass=self.classname, url=url)
166173
else:
@@ -180,9 +187,16 @@ def handle(self):
180187
for qid in qids:
181188
if queryname != self.db.query.get(qid, 'name'):
182189
continue
190+
if not self.hasPermission('Edit', self.classname,
191+
itemid=qid):
192+
raise exceptions.Unauthorised, self._(
193+
"You do not have permission to edit queries")
183194
self.db.query.set(qid, klass=self.classname, url=url)
184195
else:
185196
# create a query
197+
if not self.hasPermission('Create', self.classname):
198+
raise exceptions.Unauthorised, self._(
199+
"You do not have permission to store queries")
186200
qid = self.db.query.create(name=queryname,
187201
klass=self.classname, url=url, private_for=uid)
188202

@@ -468,7 +482,7 @@ def editItemPermission(self, props):
468482
"You do not have permission to edit user roles")
469483
if self.isEditingSelf():
470484
return 1
471-
if self.hasPermission('Edit'):
485+
if self.hasPermission('Edit', itemid=self.nodeid):
472486
return 1
473487
return 0
474488

templates/classic/html/issue.search.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@
180180
</td>
181181
</tr>
182182

183-
<tr>
183+
<tr tal:condition="python:request.user.hasPermission('Edit', 'query')">
184184
<th i18n:translate="">Query name**:</th>
185185
<td><input name="@queryname"
186186
tal:attributes="value request/form/@queryname/value | default"></td>

templates/classic/html/page.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ <h2><span metal:define-slot="body_title">body title</span></h2>
2424

2525
<tr>
2626
<td rowspan="2" valign="top" class="sidebar">
27-
<p class="classblock">
27+
<p class="classblock"
28+
tal:condition="python:request.user.hasPermission('View', 'query')">
2829
<span i18n:translate=""
2930
><b>Your Queries</b> (<a href="query?@template=edit">edit</a>)</span><br>
3031
<tal:block tal:repeat="qs request/user/queries">

0 commit comments

Comments
 (0)