Add django_su
to INSTALLED_APPS
. Make sure you put it before django.contrib.admin
.
Next add the django-su
authentication backend:
AUTHENTICATION_BACKENDS = ( # Standard Django auth "django.contrib.auth.backends.ModelBackend", # django-su auth "django_su.backends.SuBackend", )
Add this to your root urls.py
file:
url(r"^su/", include("django_su.urls")),
And that should be it!
If you install these two eggs the enhance user experience:
- The 'login su' form will render using django admin forms
- The user selection widget will render using django ajax selects
Note that django ajax selects requires the following settings:
AJAX_LOOKUP_CHANNELS = {'django_su': dict(model='auth.user', search_field='username')}
In your settings you can configure:
SU_REDIRECT_LOGIN
: URL to redirect after the login. By default is "/"SU_REDIRECT_EXIT
: URL to redirect after the logout. By default is "/"SU_LOGIN
: A function to specify the perms that the user must have can use django_suSU_CUSTOM_LOGIN_ACTION
: A function to override the django.contrib.auth.login(request, user) function so you can set session data, etc.
Go and view a user in the admin interface and look for a new 'Login as' button in the top right.
Once you have su'ed into a user, you can get exit back into your original user by navigating to /su/
in your browser.
This app was put together by Adam Charnock, but was largely based on ideas, code and comments at:
- http://bitkickers.blogspot.com/2010/06/add-button-to-django-admin-to-login-as.html
- http://copiousfreetime.blogspot.com/2006/12/django-su.html
django-su is packaged using seed.