diff --git a/django_auth_ldap_remoteuser/management/__init__.py b/django_auth_ldap_remoteuser/management/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/django_auth_ldap_remoteuser/management/commands/__init__.py b/django_auth_ldap_remoteuser/management/commands/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/django_auth_ldap_remoteuser/management/commands/syncldap.py b/django_auth_ldap_remoteuser/management/commands/syncldap.py new file mode 100644 index 0000000000000000000000000000000000000000..5541bb625da506d0555152031fc6be6bdc2a1590 --- /dev/null +++ b/django_auth_ldap_remoteuser/management/commands/syncldap.py @@ -0,0 +1,32 @@ +import logging + +from django.core.management.base import BaseCommand +from django.contrib.auth import load_backend, login +from django.contrib.auth.backends import RemoteUserBackend +from django.contrib.auth import get_user_model +import django.conf + + +class Command(BaseCommand): + can_import_settings = True + help = 'Synchronize users from a LDAP server' + + def handle(self, *args, **options): + ldap_backend = load_backend('django_auth_ldap.backend.LDAPBackend') + conn = ldap_backend.ldap.initialize(ldap_backend.settings.SERVER_URI, bytes_mode=False) + for opt, value in ldap_backend.settings.CONNECTION_OPTIONS.items(): + conn.set_option(opt, value) + if ldap_backend.settings.START_TLS: + conn.start_tls_s() + conn.simple_bind_s(ldap_backend.settings.BIND_DN, ldap_backend.settings.BIND_PASSWORD) + + user_search = django.conf.settings.AUTH_LDAP_USER_SEARCH_ALL_NAME + results = user_search.execute(conn) + ldap_users = [list(attr.values())[0][0] for dn, attr in results ] + django_users = get_user_model().objects.all() + + for user in ldap_users: + ldap_backend.populate_user(user).save() + for user in django_users: + if not user.username in ldap_users: + user.delete() diff --git a/setup.py b/setup.py index 692cb13471f3b64302a9afb7f37c11491609d56f..d0ba93f689c65a1fba48cc4d62171129683b61e4 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ -from setuptools import setup +from setuptools import setup, find_packages setup(name='django_auth_ldap_remoteuser', - version='1.0', + version='2.0', description='Combine the RemoteUser and django-auth-ldap backends for django', url='https://git.cccv.de/infra/uffd/django-auth-ldap-remoteuser', author='Andreas Valder', author_email='nd@cccv.de', license='AGPL3', - packages=['django_auth_ldap_remoteuser'], + packages=find_packages(), zip_safe=False)