pyramid: moved extraction of user into a seperate subscriber.

This commit is contained in:
Marcin Kuzminski 2017-07-12 18:54:42 +02:00
parent 93de470b3f
commit 7304e9b076
3 changed files with 26 additions and 7 deletions

View file

@ -403,7 +403,10 @@ def attach_context_attributes(context, request, user_id):
request.call_context = context 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) ip_addr = get_ip_addr(environ)
# make sure that we update permissions each time we call controller # make sure that we update permissions each time we call controller
_auth_token = (request.GET.get('auth_token', '') or _auth_token = (request.GET.get('auth_token', '') or

View file

@ -87,6 +87,25 @@ def set_user_lang(event):
event.request._LOCALE_ = user_lang 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): def add_pylons_context(event):
request = event.request request = event.request
@ -113,14 +132,9 @@ def add_pylons_context(event):
# skip api calls # skip api calls
return 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') # Setup the pylons context object ('c')
context = ContextObj() context = ContextObj()
context.rhodecode_user = auth_user context.rhodecode_user = request.user
attach_context_attributes(context, request, request.user.user_id) attach_context_attributes(context, request, request.user.user_id)
pylons.tmpl_context._push_object(context) pylons.tmpl_context._push_object(context)

View file

@ -60,6 +60,8 @@ def includeme(config):
'pyramid.events.NewRequest') 'pyramid.events.NewRequest')
config.add_subscriber('rhodecode.subscribers.add_localizer', config.add_subscriber('rhodecode.subscribers.add_localizer',
'pyramid.events.NewRequest') 'pyramid.events.NewRequest')
config.add_subscriber('rhodecode.subscribers.add_request_user_context',
'pyramid.events.ContextFound')
config.add_subscriber('rhodecode.subscribers.add_pylons_context', config.add_subscriber('rhodecode.subscribers.add_pylons_context',
'pyramid.events.ContextFound') 'pyramid.events.ContextFound')