Add user feedback on ldap errors
This commit is contained in:
parent
b8b7fea7ad
commit
974b9942e8
@ -4,7 +4,7 @@ from django.contrib.auth.views import PasswordResetConfirmView, PasswordChangeVi
|
|||||||
from django.contrib.sites.shortcuts import get_current_site
|
from django.contrib.sites.shortcuts import get_current_site
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
|
from ldap import ALREADY_EXISTS
|
||||||
from account_helper.models import Realm
|
from account_helper.models import Realm
|
||||||
from account_manager.forms import AddLDAPUserForm, UserDeleteListForm, UpdateLDAPUserForm, AdminUpdateLDAPUserForm, \
|
from account_manager.forms import AddLDAPUserForm, UserDeleteListForm, UpdateLDAPUserForm, AdminUpdateLDAPUserForm, \
|
||||||
UserGroupListForm
|
UserGroupListForm
|
||||||
@ -53,19 +53,23 @@ def user_add(request, realm_id):
|
|||||||
if request.is_secure():
|
if request.is_secure():
|
||||||
protocol = 'https'
|
protocol = 'https'
|
||||||
LdapUser.base_dn = f'ou=people,{realm.ldap_base_dn}'
|
LdapUser.base_dn = f'ou=people,{realm.ldap_base_dn}'
|
||||||
LdapUser.create_with_django_user_creation_and_welcome_mail(realm=realm,
|
try:
|
||||||
protocol=protocol,
|
LdapUser.create_with_django_user_creation_and_welcome_mail(realm=realm,
|
||||||
domain=current_site.domain,
|
protocol=protocol,
|
||||||
username=username,
|
domain=current_site.domain,
|
||||||
email=email)
|
username=username,
|
||||||
user = LdapUser.objects.get(username=username)
|
email=email)
|
||||||
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
|
if realm.default_group:
|
||||||
default_ldap_group = LdapGroup.objects.get(name=realm.default_group.name)
|
user = LdapUser.objects.get(username=username)
|
||||||
if default_ldap_group:
|
|
||||||
ldap_add_user_to_groups(ldap_user=user.dn, user_groups=[default_ldap_group, ])
|
|
||||||
return redirect('realm-user-list', realm_id)
|
|
||||||
|
|
||||||
# if a GET (or any other method) we'll create a blank form
|
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
|
||||||
|
default_ldap_group = LdapGroup.objects.get(name=realm.default_group.name)
|
||||||
|
ldap_add_user_to_groups(ldap_user=user.dn, user_groups=[default_ldap_group, ])
|
||||||
|
|
||||||
|
return redirect('realm-user-list', realm_id)
|
||||||
|
except ALREADY_EXISTS as err:
|
||||||
|
return render(request, 'user/realm_user_add.jinja2', {'form': form, 'realm': realm,
|
||||||
|
'extra_error': f'Nutzer {username} existiert bereits.'})
|
||||||
else:
|
else:
|
||||||
form = AddLDAPUserForm()
|
form = AddLDAPUserForm()
|
||||||
return render(request, 'user/realm_user_add.jinja2', {'form': form, 'realm': realm})
|
return render(request, 'user/realm_user_add.jinja2', {'form': form, 'realm': realm})
|
||||||
|
|||||||
@ -3,9 +3,12 @@
|
|||||||
|
|
||||||
{% block detail_content %}
|
{% block detail_content %}
|
||||||
<h2>Nutzer anlegen</h2>
|
<h2>Nutzer anlegen</h2>
|
||||||
|
{% if extra_error %}
|
||||||
|
<div class="alert alert-warning">{{ extra_error }}</div>
|
||||||
|
{% endif %}
|
||||||
<form action="{{ url('realm-user-add', args=[realm.id]) }}" method="post">
|
<form action="{{ url('realm-user-add', args=[realm.id]) }}" method="post">
|
||||||
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
{# {{ form.as_p() }}#}
|
{# {{ form.as_p() }}#}
|
||||||
{{ mform.text_input(form.username) }}
|
{{ mform.text_input(form.username) }}
|
||||||
{{ mform.email_input(form.email) }}
|
{{ mform.email_input(form.email) }}
|
||||||
<div class="d-flex mt-4">
|
<div class="d-flex mt-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user