Changeset 634

Show
Ignore:
Timestamp:
04/09/06 14:08:54 (2 years ago)
Author:
puffy
Message:

WikiRbacPatch:

Integrate heinlein@madboa.com's modifications (see ticket #221) to get WikiRBAC to apply on > 0.9.2.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wikirbacpatch/0.9/rbac.patch

    r388 r634  
    1 Index: web_ui.py 
    2 =================================================================== 
    3 --- web_ui.py   (revision 40) 
    4 +++ web_ui.py   (working copy) 
     1--- trac/wiki/web_ui.py.orig    2006-02-13 15:32:40.000000000 -0800 
     2+++ trac/wiki/web_ui.py 2006-02-13 15:32:09.000000000 -0800 
    53@@ -32,13 +32,15 @@ 
    64 from trac.web import IRequestHandler 
    75 from trac.wiki.model import WikiPage 
    86 from trac.wiki.formatter import wiki_to_html, wiki_to_oneliner 
     7- 
    98+from trac.wiki.rbac import WikiAuthorizer 
    109  
    11 - 
    1210 class WikiModule(Component): 
    1311  
     
    2018  
    2119     def get_active_navigation_item(self, req): 
    22 @@ -72,6 +74,7 @@ 
     20@@ -74,6 +76,7 @@ 
    2321         pagename = req.args.get('page', 'WikiStart') 
    2422         version = req.args.get('version') 
     
    2826         page = WikiPage(self.env, pagename, version, db) 
    2927  
    30 @@ -116,6 +119,12 @@ 
     28@@ -118,6 +121,13 @@ 
    3129         req.hdf['wiki.action'] = action 
    32          req.hdf['wiki.page_name'] = escape(page.name) 
    33          req.hdf['wiki.current_href'] = escape(self.env.href.wiki(page.name)
     30         req.hdf['wiki.page_name'] = page.name 
     31         req.hdf['wiki.current_href'] = self.env.href.wiki(page.name
    3432+        for permission in self.get_permission_actions(): 
    3533+            if isinstance(permission, (list, tuple)): 
    36 +                              permission = permission[0] 
     34+                               permission = permission[0] 
    3735+            self.log.debug("PERMISSION: %s", permission) 
    3836+            req.hdf['trac.acl.' + permission] =\ 
    3937+                self.authz.has_authorization(req.perm, req.authname, page.name, permission) 
     38+ 
    4039         return 'wiki.cs', None 
    4140  
    4241     # ITimelineEventProvider methods 
    43 @@ -133,25 +142,30 @@ 
     42@@ -135,24 +145,29 @@ 
    4443                            "FROM wiki WHERE time>=%s AND time<=%s", 
    4544                            (start, stop)) 
    4645             for t,name,comment,author in cursor: 
    47 -                title = '<em>%s</em> edited by %s' % ( 
    48 -                        escape(name), escape(author)) 
     46-                title = Markup('<em>%s</em> edited by %s', name, author) 
    4947-                if format == 'rss': 
    5048-                    href = self.env.abs_href.wiki(name) 
     
    5755-                yield 'wiki', href, title, t, author, comment 
    5856+                if self.authz.has_authorization(req.perm, req.authname, name, 'WIKI_VIEW'): 
    59 +                    title = '<em>%s</em> edited by %s' % ( 
    60 +                            escape(name), escape(author)) 
     57+                    title = Markup('<em>%s</em> edited by %s', name, author) 
    6158+                    if format == 'rss': 
    6259+                        href = self.env.abs_href.wiki(name) 
     
    8380         if req.args.has_key('cancel'): 
    8481             req.redirect(self.env.href.wiki(page.name)) 
    85 @@ -173,8 +187,10 @@ 
     82@@ -174,8 +189,10 @@ 
    8683             req.perm.assert_permission('WIKI_ADMIN') 
    8784         elif not page.exists: 
     
    9491         page.text = req.args.get('text') 
    9592         if req.perm.has_permission('WIKI_ADMIN'): 
    96 @@ -191,6 +207,7 @@ 
     93@@ -192,6 +209,7 @@ 
    9794             req.perm.assert_permission('WIKI_ADMIN') 
    9895         else: 
     
    10299         version = None 
    103100         if req.args.has_key('delete_version'): 
    104 @@ -209,6 +226,7 @@ 
     101@@ -210,6 +228,7 @@ 
    105102  
    106103     def _render_diff(self, req, db, page): 
     
    110107         if not page.exists: 
    111108             raise TracError, "Version %s of page %s does not exist" \ 
    112 @@ -277,6 +295,7 @@ 
     109@@ -277,6 +296,7 @@ 
    113110  
    114111     def _render_editor(self, req, db, page, preview=False): 
     
    118115         if req.args.has_key('text'): 
    119116             page.text = req.args.get('text') 
    120 @@ -320,6 +339,7 @@ 
     117@@ -320,6 +340,7 @@ 
    121118         page. 
    122119         """ 
     
    126123         if not page.exists: 
    127124             raise TracError, "Page %s does not exist" % page.name 
    128 @@ -344,6 +364,7 @@ 
     125@@ -344,6 +365,7 @@ 
    129126  
    130127     def _render_view(self, req, db, page): 
     
    134131         if page.name == 'WikiStart': 
    135132             req.hdf['title'] = '' 
    136 @@ -365,7 +386,8 @@ 
     133@@ -365,7 +387,8 @@ 
    137134             history_href = self.env.href.wiki(page.name, action='history') 
    138              req.hdf['wiki.history_href'] = escape(history_href) 
     135             req.hdf['wiki.history_href'] = history_href 
    139136         else: 
    140137-            if not req.perm.has_permission('WIKI_CREATE'): 
     
    142139+                self.authz.has_authorization(req.perm, req.authname, page.name, 'WIKI_CREATE'): 
    143140                 raise TracError('Page %s not found' % page.name) 
    144              req.hdf['wiki.page_html'] = '<p>Describe "%s" here</p>' % page.name 
    145   
    146 @@ -374,7 +396,8 @@ 
     141             req.hdf['wiki.page_html'] = Markup('<p>Describe "%s" here</p>', 
     142                                                page.name) 
     143@@ -375,7 +398,8 @@ 
    147144         for attachment in Attachment.select(self.env, 'wiki', page.name, db): 
    148145             attachments.append(attachment_to_hdf(self.env, db, req, attachment)) 
     
    154151             req.hdf['wiki.attach_href'] = attach_href 
    155152  
    156 @@ -398,7 +421,8 @@ 
     153@@ -399,7 +423,8 @@ 
    157154                        "AND " + sql_query, args) 
    158155  
    159156         for name, date, author, text in cursor: 
    160157-            yield (self.env.href.wiki(name), 
    161 -                   '%s: %s' % (name, escape(shorten_line(text))), 
     158-                   '%s: %s' % (name, shorten_line(text)), 
    162159-                   date, author, 
    163 -                   escape(shorten_result(text, query.split()))) 
    164 +            if self.authz.has_authorization(req.perm, name, 'WIKI_VIEW'): 
     160-                   shorten_result(text, query.split())) 
     161+            if self.authz.has_authorization(req.perm, req.authname, name, 'WIKI_VIEW'): 
    165162+                yield (self.env.href.wiki(name), 
    166 +                    '%s: %s' % (name, escape(shorten_line(text))), 
     163+                    '%s: %s' % (name, shorten_line(text)), 
    167164+                    date, author, 
    168 +                    escape(shorten_result(text, query.split()))) 
    169 Index: rbac.py 
    170 =================================================================== 
    171 --- rbac.py     (revision 0) 
    172 +++ rbac.py     (revision 88) 
     165+                    shorten_result(text, query.split())) 
     166--- trac/wiki/rbac.py.orig      2006-02-13 15:32:45.000000000 -0800 
     167+++ trac/wiki/rbac.py   2006-02-13 15:29:34.000000000 -0800 
    173168@@ -0,0 +1,82 @@ 
    174169+from trac.core import *