Ticket #7116: trac-browser-fine-grained-security-for-directories.patch
| File trac-browser-fine-grained-security-for-directories.patch, 2.1 KB (added by esizikov@…, 7 months ago) |
|---|
-
trac/versioncontrol/web_ui/browser.py
358 358 'properties': xhr or self.render_properties('browser', context, 359 359 node.get_properties()), 360 360 'path_links': path_links, 361 'dir': node.isdir and self._render_dir(req, repos, node, rev), 361 'dir': node.isdir and self._render_dir(req, context, repos, 362 node, rev), 362 363 'file': node.isfile and self._render_file(req, context, repos, 363 364 node, rev), 364 365 'quickjump_entries': xhr or list(repos.get_quickjump_entries(rev)), … … 394 395 395 396 # Internal methods 396 397 397 def _render_dir(self, req, repos, node, rev=None):398 req.perm .require('BROWSER_VIEW')398 def _render_dir(self, req, context, repos, node, rev=None): 399 req.perm(context.resource).require('BROWSER_VIEW') 399 400 400 401 # Entries metadata 401 402 class entry(object): … … 403 404 def __init__(self, node): 404 405 for f in entry.__slots__: 405 406 setattr(self, f, getattr(n, f)) 406 407 entries = [entry(n) for n in node.get_entries()] 407 408 def test_perm_for_entry(n): 409 resource = Context.from_request(req, 410 context.resource.realm, 411 n.path, 412 n.created_rev).resource 413 if n.isdir: 414 try: 415 req.perm(resource).require('BROWSER_VIEW') 416 return True 417 except: 418 pass 419 420 entries = [entry(n) 421 for n in node.get_entries() 422 if test_perm_for_entry(n) 423 ] 408 424 changes = get_changes(repos, [i.rev for i in entries]) 409 425 410 426 if rev:
