diff options
author | Insanemal <insanemal@gmail.com> | 2011-11-22 11:08:27 +1000 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2011-11-24 02:57:53 +0100 |
commit | c945989a70b278ddb038d194a5c9b84572ab201b (patch) | |
tree | cb5a15d507fcf075c52a2ed79967cee622d1723d /apps | |
parent | 8d092434edcabbede56feaf1be925e7d88d8aee2 (diff) | |
download | nextcloud-server-c945989a70b278ddb038d194a5c9b84572ab201b.tar.gz nextcloud-server-c945989a70b278ddb038d194a5c9b84572ab201b.zip |
Total rewite of fix.
This now re-looks up the username and returns that for use.
Signed-off-by: Insanemal <insanemal@gmail.com>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/user_ldap/settings.php | 23 | ||||
-rw-r--r-- | apps/user_ldap/templates/settings.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/user_ldap.php | 24 |
3 files changed, 30 insertions, 19 deletions
diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php index 4be36b04440..1f2d8ed9af3 100644 --- a/apps/user_ldap/settings.php +++ b/apps/user_ldap/settings.php @@ -22,16 +22,19 @@ */ $params = array('ldap_host', 'ldap_port', 'ldap_dn', 'ldap_password', 'ldap_base', 'ldap_filter', 'ldap_display_name', 'ldap_tls', 'ldap_nocase'); -foreach($params as $param){ - if(isset($_POST[$param])){ - OC_Appconfig::setValue('user_ldap', $param, $_POST[$param]); - } - elseif('ldap_tls' == $param) { - // unchecked checkboxes are not included in the post paramters - OC_Appconfig::setValue('user_ldap', $param, 0); - } - elseif('ldap_nocase' == $param) { - OC_Appconfig::setValue('user_ldap', $param, 0); +if ($_POST) { + foreach($params as $param){ + if(isset($_POST[$param])){ + OC_Appconfig::setValue('user_ldap', $param, $_POST[$param]); + } + elseif('ldap_tls' == $param) { + // unchecked checkboxes are not included in the post paramters + OC_Appconfig::setValue('user_ldap', $param, 0); + } + elseif('ldap_nocase' == $param) { + OC_Appconfig::setValue('user_ldap', $param, 0); + } + } } diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php index 587e94e013a..2abb0b47291 100644 --- a/apps/user_ldap/templates/settings.php +++ b/apps/user_ldap/templates/settings.php @@ -11,7 +11,7 @@ <p><label for="ldap_display_name"><?php echo $l->t('Display Name Field');?></label><input type="text" id="ldap_display_name" name="ldap_display_name" value="<?php echo $_['ldap_display_name']; ?>" /> <small><?php echo $l->t('Currently the display name field needs to be the same you matched %%uid against in the filter above, because ownCloud doesn\'t distinguish between user id and user name.');?></small></p> <p><input type="checkbox" id="ldap_tls" name="ldap_tls" value="1"<?php if ($_['ldap_tls']) echo ' checked'; ?>><label for="ldap_tls"><?php echo $l->t('Use TLS');?></label></p> - <p><input type="checkbox" id="ldap_nocase" name="ldap_nocase" value="1"<?php if ($_['ldap_nocase']) echo ' checked'; ?>><label for="ldap_nocase"><?php echo $l->t('Conver UID lowercase');?></label></p> + <p><input type="checkbox" id="ldap_nocase" name="ldap_nocase" value="1"<?php if ($_['ldap_nocase']) echo ' checked'; ?>><label for="ldap_nocase"><?php echo $l->t('Case insensitve LDAP server (Windows)');?></label></p> <input type="submit" value="Save" /> </fieldset> </form> diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index d35cefcaae1..106240e74b8 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -117,7 +117,21 @@ class OC_USER_LDAP extends OC_User_Backend { return false; if($this->ldap_nocase) { - return strtolower($uid); + $filter = str_replace('%uid', $uid, $this->ldap_filter); + $sr = ldap_search( $this->getDs(), $this->ldap_base, $filter ); + $entries = ldap_get_entries( $this->getDs(), $sr ); + if( $entries['count'] == 1 ) { + foreach($entries as $row) { + $ldap_display_name = strtolower($this->ldap_display_name); + if(isset($row[$ldap_display_name])) { + return $row[$ldap_display_name][0]; + } + } + } + else { + return $uid; + } + } else { return $uid; @@ -155,13 +169,7 @@ class OC_USER_LDAP extends OC_User_Backend { // TODO ldap_get_entries() seems to lower all keys => needs review $ldap_display_name = strtolower($this->ldap_display_name); if(isset($row[$ldap_display_name])) { - if($this->ldap_nocase) { - $users[] = strtolower($row[$ldap_display_name][0]); - } - else - { - $users[] = $row[$ldap_display_name][0]; - } + $users[] = $row[$ldap_display_name][0]; } } // TODO language specific sorting of user names |