use username attr for matching group members

This commit is contained in:
Eric Wagner 2023-05-25 13:24:08 +00:00 committed by Andrew Ruthven
parent c75e7aee29
commit 016e51b4ac

View File

@ -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);