in django tastypie api ~ read.

Envoyer un signal lors d'une BasicAuthentification avec Django

Tastypie propose plusieurs méthodes d'authentification
(ApiKeyAuthentication, BasicAuthentification,
OAuthAuthentication). Malheureusement,

elles ne déclenchent pas de signaux lors du succès de l'opération. On va
voir comment faire notre propre classe d'authentification pour envoyer
un signal lorsque l'utilisateur réussi à se connecter.

D'après la doc de
Tastypie
,
on peut implémenter notre authentification de cette façon :

from tastypie.authentication import Authentication

class SillyAuthentication(Authentication):
	def is_authenticated(self, request, **kwargs):
		if 'daniel' in request.user.username:
			return True
		return False

# Optional but recommended
def get_identifier(self, request):
	return request.user.username

Du coup, on a juste à récupérer le résultat de l'authentification et
envoyer le signal si on a True.

from tastypie.authentication import BasicAuthentication
from django.contrib.auth.signals import user_logged_in

class SignaledBasicAuthentication(BasicAuthentication):
	""" Send a signal when finish BasicAuthentication """
	def is_authenticated(self, request, **kwargs):
		authorized = super(SignaledBasicAuthentication, self).is_authenticated(request, **kwargs)
		if authorized is True:
			user_logged_in.send(sender=request.user.__class__, request=request, user=request.user)
		return authorized

Dans l'exemple ci-dessus, on surcharge une BasicAuthentication, mais
toutes les classes d'authentification de tastypie sont sur le même
schéma.