Now it works pretty well :)

fixes #289
This commit is contained in:
Antoine Nguyen
2013-04-13 10:01:33 +02:00
parent d1353678ff
commit bcb2bc36f2
4 changed files with 32 additions and 19 deletions
+15 -1
View File
@@ -240,7 +240,13 @@ class GeneralParametersForm(parameters.AdminParametersForm):
values = self.get_current_values()
if not ldap_available or values["authentication_type"] != "ldap":
return
ldap_uri = 'ldap://' if values["ldap_secured"] == "yes" else "ldaps://"
if not hasattr(settings, "AUTH_LDAP_USER_ATTR_MAP"):
setattr(settings, "AUTH_LDAP_USER_ATTR_MAP", {
"first_name": "givenName",
"email": "mail",
"last_name": "sn"
})
ldap_uri = 'ldaps://' if values["ldap_secured"] == "yes" else "ldap://"
ldap_uri += "%s:%s" % (values["ldap_server_address"], values["ldap_server_port"])
setattr(settings, "AUTH_LDAP_SERVER_URI", ldap_uri)
if values["ldap_auth_method"] == "searchbind":
@@ -254,6 +260,14 @@ class GeneralParametersForm(parameters.AdminParametersForm):
else:
setattr(settings, "AUTH_LDAP_USER_DN_TEMPLATE", values["ldap_user_dn_template"])
if values["ldap_is_active_directory"] == "yes":
if not hasattr(settings, "AUTH_LDAP_GLOBAL_OPTIONS"):
setattr(settings, "AUTH_LDAP_GLOBAL_OPTIONS", {
ldap.OPT_REFERRALS: False
})
else:
settings.AUTH_LDAP_GLOBAL_OPTIONS[ldap.OPT_REFERRALS] = False
parameters.register(GeneralParametersForm, ugettext_lazy("General"))
+2 -16
View File
@@ -964,24 +964,18 @@ class Extension(models.Model):
events.raiseEvent("ExtDisabled", self)
def populate_callback(sender, user=None, **kwargs):
"""Populate signal callback
def populate_callback(user):
"""Populate callback
If the LDAP authentication backend is in use, this callback will
be called each time a new user authenticates succesfuly to
Modoboa. This function is in charge of creating the mailbox
associated to the provided ``User`` object.
:param sender: ??
:param user: a ``User`` instance
"""
from modoboa.lib.permissions import grant_access_to_object
if parameters.get_admin("AUTHENTICATION_TYPE") != "ldap":
return
if user is None:
return
sadmins = User.objects.filter(is_superuser=True)
user.groups.add(Group.objects.get(name="SimpleUsers"))
@@ -1013,11 +1007,3 @@ def populate_callback(sender, user=None, **kwargs):
grant_access_to_object(sadmins[0], mb, True)
for su in sadmins[1:]:
grant_access_to_object(su, domain)
try:
from django_auth_ldap.backend import populate_user
except ImportError, inst:
pass
else:
populate_user.connect(populate_callback, dispatch_uid="myuid")
+1
View File
@@ -505,6 +505,7 @@ def saveparameters(request):
form = formdef["form"]
if form.is_valid():
form.save()
form.to_django_settings()
continue
return ajax_simple_response({"status": "ko", "prefix": form.app, "errors": form.errors})
return ajax_simple_response(dict(status="ok", respmsg=_("Parameters saved")))