##// END OF EJS Templates
vcs: Pass registry to vcs for user authentication....
Martin Bornhold -
r591:bc63cba1 default
parent child Browse files
Show More
@@ -509,7 +509,7 b' def get_auth_cache_manager(custom_ttl=No'
509 509
510 510
511 511 def authenticate(username, password, environ=None, auth_type=None,
512 skip_missing=False):
512 skip_missing=False, registry=None):
513 513 """
514 514 Authentication function used for access control,
515 515 It tries to authenticate based on enabled authentication modules.
@@ -526,7 +526,7 b' def authenticate(username, password, env'
526 526 % auth_type)
527 527 headers_only = environ and not (username and password)
528 528
529 authn_registry = get_authn_registry()
529 authn_registry = get_authn_registry(registry)
530 530 for plugin in authn_registry.get_plugins_for_authentication():
531 531 plugin.set_auth_type(auth_type)
532 532 user = plugin.get_user(username)
@@ -205,11 +205,12 b' def vcs_operation_context('
205 205
206 206 class BasicAuth(AuthBasicAuthenticator):
207 207
208 def __init__(self, realm, authfunc, auth_http_code=None,
208 def __init__(self, realm, authfunc, registry, auth_http_code=None,
209 209 initial_call_detection=False):
210 210 self.realm = realm
211 211 self.initial_call = initial_call_detection
212 212 self.authfunc = authfunc
213 self.registry = registry
213 214 self._rc_auth_http_code = auth_http_code
214 215
215 216 def _get_response_from_code(self, http_code):
@@ -242,7 +243,8 b' class BasicAuth(AuthBasicAuthenticator):'
242 243 if len(_parts) == 2:
243 244 username, password = _parts
244 245 if self.authfunc(
245 username, password, environ, VCS_TYPE):
246 username, password, environ, VCS_TYPE,
247 registry=self.registry):
246 248 return username
247 249 if username and password:
248 250 # we mark that we actually executed authentication once, at
@@ -82,7 +82,8 b' class SimpleVCS(object):'
82 82
83 83 SCM = 'unknown'
84 84
85 def __init__(self, application, config):
85 def __init__(self, application, config, registry):
86 self.registry = registry
86 87 self.application = application
87 88 self.config = config
88 89 # base path of repo locations
@@ -90,9 +91,9 b' class SimpleVCS(object):'
90 91 # authenticate this VCS request using authfunc
91 92 auth_ret_code_detection = \
92 93 str2bool(self.config.get('auth_ret_code_detection', False))
93 self.authenticate = BasicAuth('', authenticate,
94 config.get('auth_ret_code'),
95 auth_ret_code_detection)
94 self.authenticate = BasicAuth(
95 '', authenticate, registry, config.get('auth_ret_code'),
96 auth_ret_code_detection)
96 97 self.ip_addr = '0.0.0.0'
97 98
98 99 @property
@@ -284,7 +285,8 b' class SimpleVCS(object):'
284 285
285 286 # try to auth based on environ, container auth methods
286 287 log.debug('Running PRE-AUTH for container based authentication')
287 pre_auth = authenticate('', '', environ,VCS_TYPE)
288 pre_auth = authenticate(
289 '', '', environ, VCS_TYPE, registry=self.registry)
288 290 if pre_auth and pre_auth.get('username'):
289 291 username = pre_auth['username']
290 292 log.debug('PRE-AUTH got %s as username', username)
@@ -126,23 +126,24 b' class GunzipMiddleware(object):'
126 126
127 127 class VCSMiddleware(object):
128 128
129 def __init__(self, app, config, appenlight_client):
129 def __init__(self, app, config, appenlight_client, registry):
130 130 self.application = app
131 131 self.config = config
132 132 self.appenlight_client = appenlight_client
133 self.registry = registry
133 134
134 135 def _get_handler_app(self, environ):
135 136 app = None
136 137 if is_hg(environ):
137 app = SimpleHg(self.application, self.config)
138 app = SimpleHg(self.application, self.config, self.registry)
138 139
139 140 if is_git(environ):
140 app = SimpleGit(self.application, self.config)
141 app = SimpleGit(self.application, self.config, self.registry)
141 142
142 143 proxy_svn = rhodecode.CONFIG.get(
143 144 'rhodecode_proxy_subversion_http_requests', False)
144 145 if proxy_svn and is_svn(environ):
145 app = SimpleSvn(self.application, self.config)
146 app = SimpleSvn(self.application, self.config, self.registry)
146 147
147 148 if app:
148 149 app = GunzipMiddleware(app)
General Comments 0
You need to be logged in to leave comments. Login now