From 016e51b4acf3527372b9092dfe1f687177be5fa8 Mon Sep 17 00:00:00 2001 From: Eric Wagner Date: Thu, 25 May 2023 13:24:08 +0000 Subject: [PATCH] use username attr for matching group members --- inc/drivers_ldap.php | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/inc/drivers_ldap.php b/inc/drivers_ldap.php index 94c581d2..ef53c77b 100644 --- a/inc/drivers_ldap.php +++ b/inc/drivers_ldap.php @@ -557,9 +557,28 @@ function sync_LDAP_groups(){ foreach ( $groups_to_update as $group ){ $db_members = array_values ( $db_group_members[$group] ); $ldap_members = array_values ( $ldap_groups_info[$group][$member_field] ); - if ( $member_field == 'uniqueMember' || $dnfix ) { + + $mapping_field = $c->authenticate_hook['config']['mapping_field']; + if (isset($c->authenticate_hook['config']['group_match_username_attr']) && isset($mapping_field['username'])) { + $query = $ldapDriver->ldap_query_one; + $username_ldap_attribute = $mapping_field['username']; + $filter="(objectCategory=person)"; + + $ldap_members_tmp = array(); + + foreach ( $ldap_members as $member ){ + $entry = ldap_read($ldapDriver->connect, $member, $filter, array($username_ldap_attribute)); + $ldap_user_entry = ldap_first_entry($ldapDriver->connect,$entry); + $ldap_user_attributes = ldap_get_attributes($ldapDriver->connect, $ldap_user_entry); + + array_push($ldap_members_tmp, $ldap_user_attributes[$username_ldap_attribute][0]); + } + $ldap_members = $ldap_members_tmp; + } + else if ( $member_field == 'uniqueMember' || $dnfix ) { $ldap_members = fix_unique_member( $ldap_members ); } + $add_users = array_diff ( $ldap_members, $db_members ); if ( sizeof ( $add_users ) ){ $c->messages[] = sprintf(i18n('- adding %s to group : %s'),join(', ', $add_users ), $group);