diff --git a/src/authentic2/apps/authenticators/models.py b/src/authentic2/apps/authenticators/models.py
index b15cb4713..8d67d07f5 100644
--- a/src/authentic2/apps/authenticators/models.py
+++ b/src/authentic2/apps/authenticators/models.py
@@ -166,6 +166,8 @@ class AddRoleAction(AuthenticatorRelatedObjectBase):
condition = models.CharField(_('Condition (unused)'), editable=False, max_length=256, blank=True)
mandatory = models.BooleanField(_('Mandatory (unused)'), editable=False, default=False)
+ description = _('Add roles to users on successful login.')
+
class Meta:
default_related_name = 'add_role_actions'
verbose_name = _('Add a role')
diff --git a/src/authentic2/apps/authenticators/templates/authentic2/authenticators/authenticator_detail.html b/src/authentic2/apps/authenticators/templates/authentic2/authenticators/authenticator_detail.html
index 9e448b169..38df449dd 100644
--- a/src/authentic2/apps/authenticators/templates/authentic2/authenticators/authenticator_detail.html
+++ b/src/authentic2/apps/authenticators/templates/authentic2/authenticators/authenticator_detail.html
@@ -52,6 +52,7 @@
{% for model, objects in object.related_models.items %}
+
{{ model.description }}
{% include 'authentic2/authenticators/related_object_list.html' with object_list=objects model_name=model.model_name %}
{% endfor %}
diff --git a/src/authentic2_auth_oidc/models.py b/src/authentic2_auth_oidc/models.py
index 7dd220425..0a90fe467 100644
--- a/src/authentic2_auth_oidc/models.py
+++ b/src/authentic2_auth_oidc/models.py
@@ -258,6 +258,8 @@ class OIDCClaimMapping(AuthenticatorRelatedObjectBase):
objects = managers.OIDCClaimMappingManager()
+ description = _('Set user fields using claims.')
+
class Meta:
default_related_name = 'claim_mappings'
verbose_name = _('Claim')
diff --git a/src/authentic2_auth_saml/models.py b/src/authentic2_auth_saml/models.py
index 6222abba4..d5faa99f4 100644
--- a/src/authentic2_auth_saml/models.py
+++ b/src/authentic2_auth_saml/models.py
@@ -220,6 +220,10 @@ class SAMLAttributeLookup(AuthenticatorRelatedObjectBase):
saml_attribute = models.CharField(_('SAML attribute'), max_length=1024)
ignore_case = models.BooleanField(_('Ignore case'), default=False)
+ description = _(
+ 'Define which attributes are used to establish the link with an identity provider account.'
+ )
+
class Meta:
default_related_name = 'attribute_lookups'
verbose_name = _('Attribute lookup')
@@ -252,6 +256,8 @@ class SetAttributeAction(AuthenticatorRelatedObjectBase):
saml_attribute = models.CharField(_('SAML attribute name'), max_length=1024)
mandatory = models.BooleanField(_('Mandatory'), default=False, help_text=_('Deny login if action fails.'))
+ description = _('Set user fields using received SAML attributes.')
+
class Meta:
default_related_name = 'set_attribute_actions'
verbose_name = _('Set an attribute')