Skip to main content

Login as any user from the Django admin interface, then switch back when done

Authored by Adam Charnock, and some great contributors.

https://img.shields.io/pypi/v/django-su.svg https://img.shields.io/pypi/dm/django-su.svg https://img.shields.io/github/license/adamcharnock/django-su.svg https://img.shields.io/travis/adamcharnock/django-su.svg https://coveralls.io/repos/adamcharnock/django-su/badge.svg?branch=develop

Installation

  1. Either checkout django_su from GitHub, or install using pip :

    pip install django-su
  2. Add django_su to your INSTALLED_APPS. Make sure you put it before django.contrib.admin :

    INSTALLED_APPS = (
        ...
        'django_su',  # must be before ``django.contrib.admin``
        'django.contrib.admin',
    )
  3. Add SuBackend to AUTHENTICATION_BACKENDS :

    AUTHENTICATION_BACKENDS = (
        ...
        'django_su.backends.SuBackend',
    )
  4. Update your urls.py file :

    urlpatterns = [
        url(r'^su/', include('django_su.urls')),
        ...
    ]

And that should be it!

Please see example application. This application is used to manually test the functionalities of this package. This also serves as a good example.

django-su is tested on Django 2.2 or above, lower versions may work, but are considered unsupported.

Configuration (optional)

There are various optional configuration options you can set in your settings.py

# URL to redirect after the login.
# Default: "/"
SU_LOGIN_REDIRECT_URL = "/"

# URL to redirect after the logout.
# Default: "/"
SU_LOGOUT_REDIRECT_URL = "/"

# A function specifying the permissions a user requires in order
# to use the django-su functionality.
# Default: None
SU_LOGIN_CALLBACK = "example.utils.su_login_callback"

# A function to override the django.contrib.auth.login(request, user)
# view, thereby allowing one to set session data, etc.
# Default: None
SU_CUSTOM_LOGIN_ACTION = "example.utils.custom_login"

Usage

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.

How to

How to Notify superuser when connected with another user

This option warns the superuser when working with another user as initially logged in. To activate this option perform:

  1. Add django_su.context_processors.is_su to TEMPLATE_CONTEXT_PROCESSORS :

    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        'django_su.context_processors.is_su',
    )
  2. In your base.html include su/is_su.html snippet :

    {% include "su/is_su.html" %}

How to use django-su with a custom user model (AUTH_USER_MODEL)

Django-su should function normally with a custom user model. However, your ModelAdmin in your admin.py file will need tweaking as follows:

# Within your admin.py file
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from . import models

 @admin.register(models.CustomUser)
 class CustomUserAdmin(UserAdmin):
     # The following two lines are needed:
     change_form_template = "admin/auth/user/change_form.html"
     change_list_template = "admin/auth/user/change_list.html"

This ensures the Django admin will use the correct template customisations for your custom user model.

Credits

This app was put together by Adam Charnock, but was largely based on ideas, code and comments at:

django-su is packaged using seed.

Release files for django-su 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-su 1.0.0
File Size Uploaded
django-su-1.0.0.tar.gz 23.7 kB Details

Release files / django-su-1.0.0.tar.gz

Download URL django-su-1.0.0.tar.gz
Size 23.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1a3f98b2f757a3f47e33e90047c0a81cf965805fd7f91f67089292bdd461bd1a
BLAKE2b-256 checksum
How to use checksums
d3cf5d5bdaff569468dba3053a7a623f64fcf5e36d5a936a5617a1c1972a7da4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.7

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.8

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page