Django Signals ================ **django-entra-auth** uses Django `Signals ` to allow the application to listen for and execute custom logic at certain points in the authentication process. Currently, the following signals are supported: * ``post_authenticate``: sent after a user has been authenticated through any subclass of ``AdfsBaseBackend``. The signal is sent after all other processing is done, e.g. mapping claims and groups and creating the user in Django (if :ref:`the CREATE_NEW_USERS setting ` is enabled). In addition to the sender, the signal includes the user object, the claims dictionary, and the ADFS response as arguments for the signal handler: * ``sender`` (``AdfsBaseBackend``): the backend instance from which the signal was triggered. * ``user`` (Django user class): the user object that was authenticated. * ``claims`` (``dict``): the decoded access token JWT, which contains all claims sent from the identity provider. * ``adfs_response`` (``dict|None``): used in the ``AdfsAuthCodeBackend`` to provide the full response received from the server when exchanging an authorization code for an access token. To use a signal in your application: .. code-block:: python from django.dispatch import receiver from django_entra_auth.signals import post_authenticate @receiver(post_authenticate) def handle_post_authenticate(sender, user, claims, adfs_response=None, **kwargs): user.do_post_auth_steps(claims, adfs_response)