diff --git a/rhodecode/lib/base.py b/rhodecode/lib/base.py --- a/rhodecode/lib/base.py +++ b/rhodecode/lib/base.py @@ -403,7 +403,10 @@ def attach_context_attributes(context, r request.call_context = context -def get_auth_user(environ): +def get_auth_user(request): + environ = request.environ + session = request.session + ip_addr = get_ip_addr(environ) # make sure that we update permissions each time we call controller _auth_token = (request.GET.get('auth_token', '') or diff --git a/rhodecode/subscribers.py b/rhodecode/subscribers.py --- a/rhodecode/subscribers.py +++ b/rhodecode/subscribers.py @@ -87,6 +87,25 @@ def set_user_lang(event): event.request._LOCALE_ = user_lang +def add_request_user_context(event): + """ + Adds auth user into request context + """ + request = event.request + + if hasattr(request, 'vcs_call'): + # skip vcs calls + return + + if hasattr(request, 'rpc_method'): + # skip api calls + return + + auth_user = get_auth_user(request) + request.user = auth_user + request.environ['rc_auth_user'] = auth_user + + def add_pylons_context(event): request = event.request @@ -113,14 +132,9 @@ def add_pylons_context(event): # skip api calls return - # Get the rhodecode auth user object and make it available. - auth_user = get_auth_user(environ) - request.user = auth_user - environ['rc_auth_user'] = auth_user - # Setup the pylons context object ('c') context = ContextObj() - context.rhodecode_user = auth_user + context.rhodecode_user = request.user attach_context_attributes(context, request, request.user.user_id) pylons.tmpl_context._push_object(context) diff --git a/rhodecode/tweens.py b/rhodecode/tweens.py --- a/rhodecode/tweens.py +++ b/rhodecode/tweens.py @@ -60,6 +60,8 @@ def includeme(config): 'pyramid.events.NewRequest') config.add_subscriber('rhodecode.subscribers.add_localizer', 'pyramid.events.NewRequest') + config.add_subscriber('rhodecode.subscribers.add_request_user_context', + 'pyramid.events.ContextFound') config.add_subscriber('rhodecode.subscribers.add_pylons_context', 'pyramid.events.ContextFound')