Login as, se connecter à un autre compte quand on est admin
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à