From 09c422ed15ef39c199031d5a94519aaeccd94614 Mon Sep 17 00:00:00 2001 From: MG Date: Fri, 7 Jun 2019 15:58:13 +0200 Subject: [PATCH] Fix #78; Fix empty django accounts --- src/account_manager/forms.py | 5 +++++ src/account_manager/utils/django_user.py | 7 +++++++ src/account_manager/views/user_views.py | 2 ++ 3 files changed, 14 insertions(+) create mode 100644 src/account_manager/utils/django_user.py diff --git a/src/account_manager/forms.py b/src/account_manager/forms.py index d8d7964..859c10c 100644 --- a/src/account_manager/forms.py +++ b/src/account_manager/forms.py @@ -2,6 +2,7 @@ from django import forms from django.contrib.auth import get_user_model from django.contrib.auth.forms import PasswordResetForm +from account_manager.utils.django_user import update_dajngo_user from .models import LdapUser, LdapGroup from django.forms import modelformset_factory import logging @@ -83,6 +84,10 @@ class LdapPasswordResetForm(PasswordResetForm): that prevent inactive users and users with unusable passwords from resetting their password. """ + LdapUser.base_dn = LdapUser.ROOT_DN + ldap_users = LdapUser.objects.filter(email=email) + for ldap_user in ldap_users: + update_dajngo_user(ldap_user) logger.debug('Pasword reset get users') active_users = UserModel._default_manager.filter(**{ '%s__iexact' % UserModel.get_email_field_name(): email, diff --git a/src/account_manager/utils/django_user.py b/src/account_manager/utils/django_user.py new file mode 100644 index 0000000..8bf82f1 --- /dev/null +++ b/src/account_manager/utils/django_user.py @@ -0,0 +1,7 @@ +from django.contrib.auth.models import User + + +def update_dajngo_user(ldap_user): + user, _ = User.objects.get_or_create(username=ldap_user.username) + user.email = ldap_user.email + user.save() diff --git a/src/account_manager/views/user_views.py b/src/account_manager/views/user_views.py index 7581422..9375d27 100644 --- a/src/account_manager/views/user_views.py +++ b/src/account_manager/views/user_views.py @@ -18,6 +18,7 @@ from account_manager.forms import AddLDAPUserForm, UserDeleteListForm, UpdateLDA UserGroupListForm from account_manager.main_views import is_realm_admin from account_manager.models import LdapUser, LdapGroup +from account_manager.utils.django_user import update_dajngo_user from account_manager.utils.mail_utils import send_welcome_mail, send_deletion_mail from django.conf import settings @@ -175,6 +176,7 @@ def realm_user_resend_welcome_mail(request, realm_id, user_dn): realm = Realm.objects.get(id=realm_id) LdapUser.base_dn = f'ou=people,{realm.ldap_base_dn}' ldap_user = LdapUser.objects.get(dn=user_dn) + update_dajngo_user(ldap_user) current_site = get_current_site(request) protocol = 'http' if request.is_secure():