views: adapt su() view to work with guest delegates
This commit is contained in:
parent
6ded756009
commit
f68d46a94a
|
@ -437,7 +437,7 @@ def outbox_by_document(request, document_id):
|
|||
return redirect('outbox-message', mailbox.id, permanent=True)
|
||||
|
||||
|
||||
from django.contrib.auth import SESSION_KEY
|
||||
from django.contrib.auth import SESSION_KEY, BACKEND_SESSION_KEY
|
||||
from django import http
|
||||
|
||||
def su(request, username, redirect_url='/'):
|
||||
|
@ -447,8 +447,17 @@ def su(request, username, redirect_url='/'):
|
|||
if request.user.is_superuser or request.session.get('has_superuser_power'):
|
||||
su_user = get_object_or_404(User, username=username)
|
||||
if su_user.is_active:
|
||||
request.session[SESSION_KEY] = su_user.id
|
||||
request.session['has_superuser_power'] = True
|
||||
if is_guest(su_user):
|
||||
real_username = su_user.username.rsplit('-', 1)[0]
|
||||
real_user = User.objects.get(username=real_username)
|
||||
pair_id = '%s,%s' % (real_user.id, su_user.id)
|
||||
request.session[SESSION_KEY] = pair_id
|
||||
request.session[BACKEND_SESSION_KEY] = 'docbow_project.docbow.auth_backend.DelegationAuthBackend'
|
||||
request.session['has_superuser_power'] = True
|
||||
else:
|
||||
request.session[SESSION_KEY] = su_user.id
|
||||
request.session['has_superuser_power'] = True
|
||||
request.session[BACKEND_SESSION_KEY] = 'django.contrib.auth.backends.ModelBackend'
|
||||
return http.HttpResponseRedirect(redirect_url)
|
||||
else:
|
||||
return http.HttpResponseRedirect('/')
|
||||
|
|
Loading…
Reference in New Issue