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" ,
// "members" =>"memberUid"
// ), //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 **/
// 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"),
/** 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;
$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){
$group_mapping = $ldap_group[$mapping['username']];
@ -527,7 +528,7 @@ function sync_LDAP_groups(){
Principal::cacheDelete('username', $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 ){
if ( $member_field == 'uniqueMember' ) {
if ( $member_field == 'uniqueMember' || $dnfix ) {
list( $mem, $rest ) = explode(",", $member );
$member = str_replace( 'uid=', '', $mem );
}
@ -543,7 +544,7 @@ 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' ) {
if ( $member_field == 'uniqueMember' || $dnfix ) {
$ldap_members = fix_unique_member( $ldap_members );
}
$add_users = array_diff ( $ldap_members, $db_members );