Mercurial > kallithea
changeset 2912:976e2b032650 beta
patched basic auth function to overcome git issues with proxy that doesn't send both username and password. ref #586
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 09 Oct 2012 19:26:30 +0200 |
parents | b14850a72bc2 |
children | bfffaa9aff58 |
files | rhodecode/lib/base.py |
diffstat | 1 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/base.py Tue Oct 09 01:32:07 2012 +0200 +++ b/rhodecode/lib/base.py Tue Oct 09 19:26:30 2012 +0200 @@ -8,8 +8,7 @@ from paste.auth.basic import AuthBasicAuthenticator from paste.httpexceptions import HTTPUnauthorized, HTTPForbidden -from webob.exc import HTTPClientError -from paste.httpheaders import WWW_AUTHENTICATE +from paste.httpheaders import WWW_AUTHENTICATE, AUTHORIZATION from pylons import config, tmpl_context as c, request, session, url from pylons.controllers import WSGIController @@ -74,6 +73,23 @@ return HTTPForbidden(headers=head) return HTTPUnauthorized(headers=head) + def authenticate(self, environ): + authorization = AUTHORIZATION(environ) + if not authorization: + return self.build_authentication() + (authmeth, auth) = authorization.split(' ', 1) + if 'basic' != authmeth.lower(): + return self.build_authentication() + auth = auth.strip().decode('base64') + _parts = auth.split(':', 1) + if len(_parts) == 2: + username, password = _parts + if self.authfunc(environ, username, password): + return username + return self.build_authentication() + + __call__ = authenticate + class BaseVCSController(object):