Login as, se connecter à un autre compte quand on est admin

9 octobre 2015
Aymeric

Parfois, lorsqu'un utilisateur nous reporte un bug, on aimerait bien se connecter à son compte pour mieux comprendre son problème.

Django_su est la bibliothèque Django qu'il vous faut pour cela. Le projet est assez ancien (il a été créé en 2011) et il reste encore assez actif. Pour preuve j'ai fait une pull request qui a été validé en moins de 45min !

Pour voir le projet c'est par la https://github.com/adamcharnock/django-su

Installation

Ajouter git+https://github.com/adamcharnock/django-su.git@develop à votre fichier requirements.txt
Nous utiliserons la branche develop dans l'exemple parcequ'elle a des fonctionnalités en plus.

Dans votre fichier settings.py il faut ajouter django_su dans les apps installées. Il faut le mettre AVANT l'admin

INSTALLED_APPS = (
    'django_su', # avant django.contrib.admin
    'django.contrib.admin',
    'django.contrib.auth',
    ...
)

Pour avoir un message warning lorsque vous êtes connecté au compte d'une autre personne il faut ajouter un context_processor

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django_su.context_processors.is_su',
            ],
        },
    },
]

Enfin, pour que ce message s'affiche il faut include un fichier dans votre template de base

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

Fonctionnement

Dans l'interface d'admin, dans la partir User, lorsque vous sélectionné un utilisatieur, un bouton login as apparait ! En cliquant dessus vous serez connecté à son compte. Pour vous déconnecter rendez-vous à l'adresse monsite/su/

Et voilà

Articles récents

Catégories

Tags