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à