Changeset 64

Show
Ignore:
Timestamp:
2009年02月24日 12时10分58秒 (3 years ago)
Author:
jiangx
Message:

Fixed #15: Repository admin has readonly access rights for role managemant and logs interface.

Location:
trunk/pysvnmanager
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/pysvnmanager/controllers/authz.py

    r63 r64  
    182182        try: 
    183183            if isAddRepos: 
    184                 if not self.is_super_user: 
    185                     raise Exception("Access denied.") 
     184                assert self.is_super_user 
    186185                repos = self.authz.add_repos(reposname) 
    187186            else: 
    188187                repos = self.authz.get_repos(reposname) 
    189188                if not repos: 
    190                     if not self.is_super_user: 
    191                         raise Exception("Access denied.") 
     189                    assert self.is_super_user 
    192190                    log.warning("Repos '%s' not exists. Create authz config automatically." % reposname) 
    193191                    repos = self.authz.add_repos(reposname) 
  • trunk/pysvnmanager/controllers/logs.py

    r55 r64  
    3434        # Default logs per page is 10 
    3535        self.rcslog.log_per_page = cfg.log_per_page 
     36        self.is_super_user = self.authz.is_super_user(self.login_as) 
     37        self.own_reposlist = set(self.authz.get_manageable_repos_list(self.login_as)) 
    3638     
    3739    def __before__(self, action): 
    3840        super(LogsController, self).__before__(action) 
    39         if not self.authz.is_super_user(self.login_as): 
     41        if not self.own_reposlist and not self.is_super_user: 
    4042            return redirect_to(h.url_for(controller='security', action='failed')) 
    4143     
     
    161163        c.contents = self.rcslog.cat(id) 
    162164        c.log = self.rcslog.get_logs(id, id)[0] 
    163         if self.rcslog.head == id: 
     165        if self.rcslog.head != id and self.is_super_user: 
    164166            c.rollback_enabled = True 
    165167        else: 
     
    168170     
    169171    def rollback(self, id): 
     172        assert self.is_super_user 
    170173        log_message = _("Rollback successfully to revision: %s") % id 
    171174        try: 
  • trunk/pysvnmanager/controllers/repos.py

    r63 r64  
    6060 
    6161    def validate_repos(self, reposname): 
    62         if reposname not in self.own_reposlist and not self.is_super_user: 
    63             raise Exception("Access denied.") 
     62        assert reposname in self.own_reposlist or self.is_super_user 
    6463 
    6564    def init_repos_list(self): 
  • trunk/pysvnmanager/controllers/role.py

    r50 r64  
    3535        self.userlist = map(lambda x:x.uname, self.authz.userlist) 
    3636        self.grouplist = map(lambda x:x.uname, self.authz.grouplist) 
     37        self.is_super_user = self.authz.is_super_user(self.login_as) 
     38        self.own_reposlist = self.authz.get_manageable_repos_list(self.login_as) 
    3739 
    3840    def __before__(self, action): 
    3941        super(RoleController, self).__before__(action) 
    40         if not self.authz.is_super_user(self.login_as): 
     42        if not self.own_reposlist and not self.is_super_user: 
    4143            return redirect_to(h.url_for(controller='security', action='failed')) 
    4244 
     
    4648        c.userlist = self.userlist 
    4749        c.grouplist = self.grouplist 
     50        c.is_super_user = self.is_super_user 
    4851        return render('/role/index.mako') 
    4952     
     
    102105         
    103106    def save_group(self): 
     107        assert self.is_super_user 
    104108        d = request.params 
    105109        member_list = [] 
     
    133137     
    134138    def delete_group(self): 
     139        assert self.is_super_user 
    135140        d = request.params 
    136141        rolename = d.get('role') 
     
    154159         
    155160    def save_alias(self): 
     161        assert self.is_super_user 
    156162        d = request.params 
    157163        aliasname = d.get('aliasname') 
     
    175181     
    176182    def delete_alias(self): 
     183        assert self.is_super_user 
    177184        d = request.params 
    178185        aliasname = d.get('aliasname') 
  • trunk/pysvnmanager/templates/logs/view.mako

    r39 r64  
    1414 
    1515<form name="main_form" action="${h.url_for(action='rollback')}" onsubmit="return confirm('${_("Rollback to this revision, are you sure?")}');"> 
    16 % if not c.rollback_enabled: 
     16% if c.rollback_enabled: 
    1717  <input type="submit" name="submit" value='${_("Rollback to this revision")}'> 
    1818  &nbsp;&nbsp;&nbsp;&nbsp; 
  • trunk/pysvnmanager/templates/role/index.mako

    r55 r64  
    602602function enable_save_btn() 
    603603{ 
     604% if c.is_super_user: 
    604605        document.main_form.save_btn.disabled = false; 
     606% else: 
     607    ; 
     608% endif  
    605609} 
    606610 
     
    612616function enable_delete_btn() 
    613617{ 
     618% if c.is_super_user: 
    614619        document.main_form.delete_btn.disabled = false; 
     620% else: 
     621    ; 
     622% endif  
    615623} 
    616624 
     
    632640${_("Select a role name:")} 
    633641    ${h.select("role_list", "", role_list_opts, onChange='role_changed()')} 
    634 <a href="#" onclick='new_group()'>[+${_("New Group")}]</a> 
    635 <a href="#" onclick='new_alias()'>[+${_("New Alias")}]</a> 
     642% if c.is_super_user: 
     643    <a href="#" onclick='new_group()'>[+${_("New Group")}]</a> 
     644    <a href="#" onclick='new_alias()'>[+${_("New Alias")}]</a> 
     645% endif 
    636646</div> 
    637647 
     
    706716<div id='action_box' style="position:relative;" class=gainlayout> 
    707717        <input type="hidden" name="rolename"> 
    708     <input type="button" name="save_btn"   value='${_("Save")}' onClick="do_save(this.form)"> 
    709     <input type="button" name="delete_btn" value='${_("Delete")}' onClick="do_delete(this.form)"> 
    710     <input type="button" name="cancel_btn" value='${_("Cancel")}' onClick="role_changed()"> 
     718    <input type="button" name="save_btn"   value='${_("Save")}'  onClick="do_save(this.form)" ${c.is_super_user or "DISABLED"}> 
     719    <input type="button" name="delete_btn" value='${_("Delete")}' onClick="do_delete(this.form)" ${c.is_super_user or "DISABLED"}> 
     720    <input type="button" name="cancel_btn" value='${_("Cancel")}' onClick="role_changed()" ${c.is_super_user or "DISABLED"}> 
    711721</div> 
    712722<!-- end: action_box -->