Implement better cross realm protection message

This commit is contained in:
Götz 2019-05-02 13:56:46 +02:00
parent a0503af5ef
commit bcd0109577

View File

@ -5,6 +5,7 @@ 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 django.http import HttpResponse from django.http import HttpResponse
from django.utils.translation import gettext as _
from ldap import ALREADY_EXISTS, OBJECT_CLASS_VIOLATION from ldap import ALREADY_EXISTS, OBJECT_CLASS_VIOLATION
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, \
@ -23,7 +24,10 @@ def protect_cross_realm_user_access(view_func):
user_dn = kwargs.get('user_dn', None) user_dn = kwargs.get('user_dn', None)
if realm_id and user_dn and Realm.objects.get(id=realm_id).ldap_base_dn not in user_dn: if realm_id and user_dn and Realm.objects.get(id=realm_id).ldap_base_dn not in user_dn:
return HttpResponse("Ressource konnte nicht gefunden werden.", status=404) return render(request, 'permission_denied.jinja2',
{
'extra_errors': _('Der angefragte Nutzer gehört einem anderen Bereich an. Nutzer können nur von dem Bereich bearbeitet werden, in dem sie erstellt wurden.')},
status=404)
return view_func(request, *args, **kwargs) return view_func(request, *args, **kwargs)
return decorator return decorator
@ -411,5 +415,3 @@ class LdapPasswordChangeView(PasswordChangeView):
LdapUser.base_dn = LdapUser.ROOT_DN LdapUser.base_dn = LdapUser.ROOT_DN
LdapUser.password_reset(user, password) LdapUser.password_reset(user, password)
return super().form_valid(form) return super().form_valid(form)