From 1ad35c7033d8af1e8fe2ab0bac85d1bdccc1c74a Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Tue, 11 Feb 2025 15:32:43 +0100 Subject: [PATCH] feat(dgsi/account): Update the e-mail address at login --- src/shared/account.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/shared/account.py b/src/shared/account.py index 5c2a2f8..fe89444 100644 --- a/src/shared/account.py +++ b/src/shared/account.py @@ -12,6 +12,7 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ from dgsi.models import Translation, User +from shared.kanidm import sync_call logger = logging.getLogger(__name__) @@ -95,6 +96,12 @@ class SharedAccountAdapter(DefaultSocialAccountAdapter): u.is_superuser = u.part_of(settings.DGSI_SUPERUSER_GROUP) u.is_staff = u.is_superuser or u.part_of(settings.DGSI_STAFF_GROUP) + # Update the e-mail address if possible + if u.kanidm is not None: + emails = sync_call("call_get", f"/v1/person/{u.username}/_attr/mail") + if emails != []: + u.email = emails[0] + # Save the updated user if needed if sociallogin.is_existing: u.save()