Skip to content
Snippets Groups Projects
Commit 6c92b00d authored by Robin Sonnabend's avatar Robin Sonnabend
Browse files

Enabled recursive group membership in AD

/close #144
parent af7efaa4
Branches
Tags v3.2.5
No related merge requests found
...@@ -115,12 +115,17 @@ class ADManager: ...@@ -115,12 +115,17 @@ class ADManager:
obj_def = ldap3.ObjectDef("user", connection) obj_def = ldap3.ObjectDef("user", connection)
name_filter = "cn:={}".format(username) name_filter = "cn:={}".format(username)
user_reader = ldap3.Reader(connection, obj_def, self.user_dn, name_filter) user_reader = ldap3.Reader(connection, obj_def, self.user_dn, name_filter)
group_def = ldap3.ObjectDef("group", connection)
def _yield_recursive_groups(group_dn):
group_reader = ldap3.Reader(connection, group_def, group_dn, None)
for entry in group_reader.search():
yield entry.name.value
for child in entry.memberOf:
yield from _yield_recursive_groups(child)
for result in user_reader.search(): for result in user_reader.search():
for group_dn in result.memberOf: for group_dn in result.memberOf:
group_dn_parts = parse_dn(group_dn) yield from _yield_recursive_groups(group_dn)
if len(group_dn_parts) >= 1:
key, group, next_char = group_dn_parts[0]
yield group
def all_groups(self): def all_groups(self):
connection = self.prepare_connection() connection = self.prepare_connection()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment