From acfa85e2201202e250e19eec9f7fe1c6cc8a07e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20G=C3=B6tz?= Date: Tue, 9 Apr 2019 15:13:56 +0200 Subject: [PATCH] Fix user update formular --- account_manager/forms.py | 11 +++++++++++ account_manager/main_views.py | 18 +++++++++++++----- account_manager/urls.py | 2 +- account_manager/views/user_views.py | 20 +++++++++----------- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/account_manager/forms.py b/account_manager/forms.py index d5519d8..eb59247 100644 --- a/account_manager/forms.py +++ b/account_manager/forms.py @@ -8,6 +8,17 @@ class AddLDAPUserForm(forms.Form): email = forms.EmailField(label='E-Mail', required=False) +class UpdateLDAPUserForm(forms.Form): + # username = forms.CharField(label='Nutzername', max_length=400) + email = forms.EmailField(label='E-Mail') + password = forms.CharField(label='Passwort', widget=forms.PasswordInput, required=False) + first_name = forms.CharField(label='Vorname', required=True) + last_name = forms.CharField(label='Nachname', required=True) + # phone = forms.(db_column='telephoneNumber', blank=True) + # mobile_phone = forms.CharField(db_column='mobile', blank=True) + # photo = forms.ImageField(label='Profilfoto', required=False) + + class UserDeleteListForm(forms.Form): ldap_users = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=LdapUser.objects.all()) diff --git a/account_manager/main_views.py b/account_manager/main_views.py index beb4fd3..b24d7c1 100644 --- a/account_manager/main_views.py +++ b/account_manager/main_views.py @@ -1,16 +1,20 @@ +import logging import re from smtplib import SMTPAuthenticationError, SMTPConnectError, SMTPException from socket import timeout from django.contrib.auth.decorators import login_required from django.contrib.auth.models import Group, User -from django.shortcuts import render, redirect +from django.core.exceptions import ObjectDoesNotExist +from django.shortcuts import render, redirect, HttpResponse from account_helper.models import Realm from account_manager.utils.mail_utils import realm_send_mail from .forms import RealmAddForm, RealmUpdateForm, EmailSettingsForm from .models import LdapGroup, LdapUser +logger = logging.getLogger(__name__) + def is_realm_admin(view_func): def decorator(request, *args, **kwargs): @@ -31,10 +35,14 @@ def realm_list(request): if not user.is_superuser: realms = Realm.objects.filter(admin_group__user__username__contains=user.username) if len(realms) == 0: - user = LdapUser.objects.get(username=user.username) - realm_base_dn = re.compile('(uid=[a-zA-Z0-9_]*),(ou=[a-zA-Z_]*),(.*)').match(user.dn).group(3) - realm = Realm.objects.get(ldap_base_dn=realm_base_dn) - return redirect('realm-user-detail', realm.id, user.dn) + try: + user = LdapUser.objects.get(username=user.username) + realm_base_dn = re.compile('(uid=[a-zA-Z0-9_]*),(ou=[a-zA-Z_]*),(.*)').match(user.dn).group(3) + realm = Realm.objects.get(ldap_base_dn=realm_base_dn) + return redirect('realm-user-detail', realm.id, user.dn) + except ObjectDoesNotExist as err: + logger.info('Anmeldung fehlgeschlagen', err) + return HttpResponse("Invalid login. Please try again.") elif len(realms) == 1: return redirect('realm-detail', realms[0].id) else: diff --git a/account_manager/urls.py b/account_manager/urls.py index 2823391..278b4fd 100644 --- a/account_manager/urls.py +++ b/account_manager/urls.py @@ -6,7 +6,7 @@ from . import main_views urlpatterns = [ # Realm - path('realm/', main_views.realm_list, name='realm-home'), + path('', main_views.realm_list, name='realm-home'), path('realm//', main_views.realm_detail, name='realm-detail'), path('realm//update/', main_views.realm_update, name='realm-update'), path('realm//delete/', main_views.realm_delete, name='realm-delete'), diff --git a/account_manager/views/user_views.py b/account_manager/views/user_views.py index 5ef0bae..408aaad 100644 --- a/account_manager/views/user_views.py +++ b/account_manager/views/user_views.py @@ -1,16 +1,14 @@ from django.contrib.auth.decorators import login_required +from django.contrib.auth.models import User +from django.contrib.auth.views import PasswordResetConfirmView +from django.contrib.sites.shortcuts import get_current_site +from django.core.exceptions import ObjectDoesNotExist from django.shortcuts import render, redirect from account_helper.models import Realm -from account_manager.forms import AddLDAPUserForm, UserDeleteListForm -from account_manager.models import LdapUser, LdapGroup -from django.contrib.auth.models import User +from account_manager.forms import AddLDAPUserForm, UserDeleteListForm, UpdateLDAPUserForm from account_manager.main_views import is_realm_admin -from django.core.exceptions import ObjectDoesNotExist, ValidationError -from django.utils.http import urlsafe_base64_decode -from django.contrib.auth.views import PasswordResetConfirmView -from django.contrib.sites.shortcuts import get_current_site -from django.contrib.auth import login +from account_manager.models import LdapUser, LdapGroup @login_required @@ -132,9 +130,9 @@ def user_deleted(request, realm_id): def user_update_controller(ldap_user, realm_id, realm_obj, request, user_dn, redirect_name, detail_page): if request.method == 'POST': - form = AddLDAPUserForm(request.POST) + form = UpdateLDAPUserForm(request.POST) if form.is_valid(): - ldap_user.username = form.cleaned_data['username'] + # ldap_user.username = form.cleaned_data['username'] password = form.cleaned_data['password'] if password: ldap_user.password = password @@ -147,7 +145,7 @@ def user_update_controller(ldap_user, realm_id, realm_obj, request, user_dn, red else: form_data = {'username': ldap_user.username, 'first_name': ldap_user.first_name, 'last_name': ldap_user.last_name, 'email': ldap_user.email} - form = AddLDAPUserForm(initial=form_data) + form = UpdateLDAPUserForm(initial=form_data) return render(request, detail_page, {'form': form, 'realm': realm_obj})