diff --git a/src/memberdb/account_backend.py b/src/memberdb/account_backend.py index bcfffeddfc6f2de6353e28698025e2e7edf6855a..93f3f71675b94a9ebff2c2112dbe4bba22d0a468 100644 --- a/src/memberdb/account_backend.py +++ b/src/memberdb/account_backend.py @@ -80,6 +80,19 @@ def get_ldap_attrs(dn, filter, limit, attrs): return entries; +def enumerate_users(): + """ return a list of all usernames, procured from the depths of AD """ + ld = get_ldap_instance() + ld.search(ldap_user_dn, '(objectClass=user)', attributes=['sAMAccountName']) + result = ld.result + if result['result'] == RESULT_SUCCESS: + usernames = [] + for e in ld.entries: + usernames += [str(e['sAMAccountName'])] + return usernames + else: + return None + def get_user_attrs(username, attrs): # find the user filter = "(cn=" + username + ')' @@ -225,6 +238,7 @@ def create_ad_user(form_data, member): if uids[0] != maxuid: newuid = str(maxuid) else: + # check for gaps in the uid space and try to fill them prev = uids[0] for uid in uids: if uid - prev > 1: