Configuration via Signals
The signals module defines various signal that are
fired on different events:
Signal that is fired when a user has been created via the Helmholtz AAI |
|
Signal that is fired when a user logs in via the Helmholtz AAI |
|
Signal that is fired when a user receives an update via the Helmholtz AAI |
|
Signal that is fired if a new Virtual Organization has been created |
|
Signal that is fired if a Helmholtz AAI user enteres a VO |
|
Signal that is fired if a Helmholtz AAI user left a VO |
|
Signal that is fired when a user does not have the permission to login |
The purpose of these signals should be pretty much self-explanatory.
Examples
Suppose you want users of a specific VO to become superusers. Then you can do
something like this using the aai_vo_entered and
aai_vo_left signals:
from django.dispatch import receiver
from django_helmholtz_aai import models, signals
@receiver(signals.aai_vo_entered)
def on_vo_enter(
sender,
vo: models.HelmholtzVirtualOrganization,
user: models.HelmholtzUser,
**kwargs,
):
vo_id = "urn:geant:helmholtz.de:group:hereon#login.helmholtz.de"
if vo.eduperson_entitlement == vo_id:
user.is_superuser = True
user.save()
@receiver(signals.aai_vo_left)
def on_vo_leave(
sender,
vo: models.HelmholtzVirtualOrganization,
user: models.HelmholtzUser,
**kwargs,
):
vo_id = "urn:geant:helmholtz.de:group:hereon#login.helmholtz.de"
if vo.eduperson_entitlement == vo_id:
user.is_superuser = False
user.save()
Let’s say you want to display a message in the frontend when a user logged in
for the first time. Here you can use the aai_user_created signal:
from django.contrib import messages
from django_helmholtz_aai import models, signals
@receiver(signals.aai_user_created)
def created_user(
sender,
user: models.HelmholtzUser,
request,
**kwargs,
):
messages.add_message(
request, messages.success, f"Welcome on board {user}!"
)