mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-20 06:08:35 +02:00
* Initial commit for LDAP sync process. * Fixed unit tests. * Added doc and run ldapsync tests on travis. * Removed server address. * Force bytes when calling ldap methods. * Fixed tests compat with python2. * Do not force bytes here. * Force bytes. * Force bytes for attribute names too. * Disable bytes mode in PY2. * Handle account removals. * Fixed unit tests. * Limit sync to simple users. * Fixed unit test. * Fixed unit test.
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""LDAP sync related handlers."""
|
|
|
|
from django.db.models import signals
|
|
from django.dispatch import receiver
|
|
|
|
from modoboa.core import models as core_models
|
|
from modoboa.parameters import tools as param_tools
|
|
|
|
from . import lib
|
|
|
|
|
|
@receiver(signals.post_save, sender=core_models.User)
|
|
def sync_ldap_account(sender, instance, created, **kwargs):
|
|
"""Create/modify a new LDAP account if needed."""
|
|
config = dict(param_tools.get_global_parameters("core"))
|
|
if not config["ldap_enable_sync"]:
|
|
return
|
|
if created:
|
|
return
|
|
if instance.role != "SimpleUsers":
|
|
return
|
|
update_fields = kwargs.get("update_fields")
|
|
if update_fields and "last_login" in update_fields:
|
|
return
|
|
lib.update_ldap_account(instance, config)
|
|
|
|
|
|
@receiver(signals.pre_delete, sender=core_models.User)
|
|
def delete_ldap_account(sender, instance, **kwargs):
|
|
"""Delete LDAP account if needed."""
|
|
config = dict(param_tools.get_global_parameters("core"))
|
|
if not config["ldap_enable_sync"]:
|
|
return
|
|
if instance.role != "SimpleUsers":
|
|
return
|
|
lib.delete_ldap_account(instance, config)
|