allow admins to manually toggle the uniqueMember fix via config (fix #102)

This commit is contained in:
Marc 2017-01-17 17:31:50 +01:00 committed by Florian Schlichting
parent ee0e5e6656
commit 364bbd1df5
2 changed files with 4 additions and 2 deletions

View File

@ -471,6 +471,7 @@ $c->admin_email ='calendar-admin@example.com';
// "fullname" => "cn" , // "fullname" => "cn" ,
// "members" =>"memberUid" // "members" =>"memberUid"
// ), //used to create the group based on the ldap properties // ), //used to create the group based on the ldap properties
// 'group_member_dnfix' => true, // if your "members" field contains the full DN and needs to be truncated to just the uid
/** used to set default value for all users, will be overcharged by ldap if defined also in mapping_field **/ /** used to set default value for all users, will be overcharged by ldap if defined also in mapping_field **/
// 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"), // 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"),
/** foreach key set start and length in the string provided by ldap /** foreach key set start and length in the string provided by ldap

View File

@ -453,6 +453,7 @@ function sync_LDAP_groups(){
if ( sizeof($ldap_groups_tmp) == 0 ) return; if ( sizeof($ldap_groups_tmp) == 0 ) return;
$member_field = $mapping['members']; $member_field = $mapping['members'];
$dnfix = isset($c->authenticate_hook['config']['group_member_dnfix']) && $c->authenticate_hook['config']['group_member_dnfix'];
foreach($ldap_groups_tmp as $key => $ldap_group){ foreach($ldap_groups_tmp as $key => $ldap_group){
$group_mapping = $ldap_group[$mapping['username']]; $group_mapping = $ldap_group[$mapping['username']];
@ -527,7 +528,7 @@ function sync_LDAP_groups(){
Principal::cacheDelete('username', $group); Principal::cacheDelete('username', $group);
$c->messages[] = sprintf(i18n('- adding users %s to group : %s'),join(',',$ldap_groups_info[$group][$mapping['members']]),$group); $c->messages[] = sprintf(i18n('- adding users %s to group : %s'),join(',',$ldap_groups_info[$group][$mapping['members']]),$group);
foreach ( $ldap_groups_info[$group][$mapping['members']] as $member ){ foreach ( $ldap_groups_info[$group][$mapping['members']] as $member ){
if ( $member_field == 'uniqueMember' ) { if ( $member_field == 'uniqueMember' || $dnfix ) {
list( $mem, $rest ) = explode(",", $member ); list( $mem, $rest ) = explode(",", $member );
$member = str_replace( 'uid=', '', $mem ); $member = str_replace( 'uid=', '', $mem );
} }
@ -543,7 +544,7 @@ function sync_LDAP_groups(){
foreach ( $groups_to_update as $group ){ foreach ( $groups_to_update as $group ){
$db_members = array_values ( $db_group_members[$group] ); $db_members = array_values ( $db_group_members[$group] );
$ldap_members = array_values ( $ldap_groups_info[$group][$member_field] ); $ldap_members = array_values ( $ldap_groups_info[$group][$member_field] );
if ( $member_field == 'uniqueMember' ) { if ( $member_field == 'uniqueMember' || $dnfix ) {
$ldap_members = fix_unique_member( $ldap_members ); $ldap_members = fix_unique_member( $ldap_members );
} }
$add_users = array_diff ( $ldap_members, $db_members ); $add_users = array_diff ( $ldap_members, $db_members );