Ticket #5246: authz-external-groups-2.patch
| File authz-external-groups-2.patch, 2.5 KB (added by christian.seiler@…, 20 months ago) |
|---|
-
trac/versioncontrol/svn_authz.py
18 18 19 19 import os.path 20 20 21 from trac.config import Option 21 from trac.config import Option, BoolOption 22 22 from trac.core import * 23 23 from trac.versioncontrol import Authorizer 24 from trac.perm import PermissionSystem 24 25 25 26 26 27 class SvnAuthzOptions(Component): … … 32 33 33 34 authz_module_name = Option('trac', 'authz_module_name', '', 34 35 """The module prefix used in the authz_file.""") 36 37 authz_use_perm_groups = BoolOption('trac', 'authz_use_perm_groups', 'false', 38 """Whether to use groups provided by the permission storage instead 39 of the groups defined in the [groups] section of the authz file. 40 """) 35 41 36 42 37 43 def SubversionAuthorizer(env, repos, authname): … … 44 50 env.log.error('[trac] authz_file (%s) does not exist.' % authz_file) 45 51 46 52 module_name = env.config.get('trac', 'authz_module_name') 47 return RealSubversionAuthorizer(repos, authname, module_name, authz_file) 53 use_perm_groups = env.config.getbool('trac', 'authz_use_perm_groups') 54 perm = PermissionSystem(env) 55 return RealSubversionAuthorizer(repos, authname, module_name, use_perm_groups, perm, authz_file) 48 56 49 57 def parent_iter(path): 50 58 path = path.strip('/') … … 69 77 module_name = '' 70 78 conf_authz = None 71 79 72 def __init__(self, repos, auth_name, module_name, cfg_file, cfg_fp=None):80 def __init__(self, repos, auth_name, module_name, use_perm_groups, perm, cfg_file, cfg_fp=None): 73 81 self.repos = repos 74 82 self.auth_name = auth_name 75 83 self.module_name = module_name … … 81 89 elif cfg_file: 82 90 self.conf_authz.read(cfg_file) 83 91 84 self.groups = self._groups( )92 self.groups = self._groups(use_perm_groups, perm) 85 93 86 94 def has_permission(self, path): 87 95 if path is None: … … 108 116 109 117 # Internal API 110 118 111 def _groups(self): 119 def _groups(self, use_perm_groups, perm): 120 if use_perm_groups: 121 groups = [] 122 for provider in perm.store.group_providers: 123 for group in provider.get_permission_groups(self.auth_name): 124 if group[0] == '@': 125 group = group[1:] 126 groups.append(group) 127 return groups 128 112 129 if not self.conf_authz.has_section('groups'): 113 130 return [] 114 131
