Skip to content

Commit cf13b22

Browse files
committed
Fix searchable checks in roundup/security.py
1 parent 2d389e1 commit cf13b22

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

roundup/security.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,16 @@ def searchable(self, classname, property):
155155
if self.klass is not None and self.klass != classname:
156156
return 0
157157

158-
# what about property?
159-
if not self._properties_dict[property]:
158+
# Do not allow access if we have a check method
159+
if self.check:
160160
return 0
161161

162-
if self.check:
162+
# Allow if we have access to *all* properties
163+
if self.properties is None:
164+
return 1
165+
166+
# what about property?
167+
if not self._properties_dict[property]:
163168
return 0
164169

165170
return 1
@@ -276,11 +281,17 @@ def searchable (self, classname, propname):
276281
# Only permissions without a check method
277282
if perm not in self._permissions:
278283
continue
279-
if classname not in self._permissions[perm]:
284+
p = self._permissions[perm]
285+
if classname not in p and None not in p:
280286
continue
281-
for p in self._permissions[perm][classname][False]:
282-
if p.searchable(classname, propname):
283-
return True
287+
if None in p:
288+
for p in p[None][False]:
289+
if p.searchable(classname, propname):
290+
return True
291+
if classname in p:
292+
for p in p[classname][False]:
293+
if p.searchable(classname, propname):
294+
return True
284295

285296

286297
class Security:

0 commit comments

Comments
 (0)