diff --git a/src/authentic2_gnm/management/commands/sync-cut.py b/src/authentic2_gnm/management/commands/sync-cut.py index 4eaeeda..6cb864a 100644 --- a/src/authentic2_gnm/management/commands/sync-cut.py +++ b/src/authentic2_gnm/management/commands/sync-cut.py @@ -27,6 +27,7 @@ from django.core.management.base import BaseCommand from django_rbac.utils import get_ou_model from authentic2.a2_rbac.utils import get_default_ou +from authentic2.utils.template import Template from authentic2_auth_oidc.models import OIDCProvider, OIDCAccount @@ -71,9 +72,14 @@ class Command(BaseCommand): except OIDCAccount.DoesNotExist: continue for claim in cut_users.claim_mappings.all(): - setattr(account.user, claim.attribute, user_dict.get(claim.claim)) + if '{{' in claim.claim or '{%' in claim.claim: + template = Template(claim.claim) + attribute_value = template.render(context=user_dict) + else: + attribute_value = user_dict.get(claim.claim) + setattr(account.user, claim.attribute, attribute_value) try: - setattr(account.user.attributes, claim.attribute, user_dict.get(claim.claim)) + setattr(account.user.attributes, claim.attribute, attribute_value) except AttributeError: pass account.user.save()