From bf84aa23f40980bae72ced15b1830d6e4dfc49eb Mon Sep 17 00:00:00 2001 From: Markus Kalkbrenner Date: Thu, 17 Nov 2011 16:03:42 +0100 Subject: [PATCH] - provide a setting for the ldap user display name instead of hardcoded value 'uid' which is not common for Active Directory - provide a sorted list of ldap users - replaced double quotes by single quotes and spaces by tabs according to coding standards - replaced hardcoded strings in template by translatable ones --- apps/user_ldap/appinfo/app.php | 5 ++++- apps/user_ldap/settings.php | 5 ++++- apps/user_ldap/templates/settings.php | 15 ++++++++------- apps/user_ldap/user_ldap.php | 24 ++++++++++++++---------- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index 7906241f79b..3261708f590 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -26,7 +26,10 @@ require_once('apps/user_ldap/user_ldap.php'); OC_APP::registerAdmin('user_ldap','settings'); // define LDAP_DEFAULT_PORT -define("OC_USER_BACKEND_LDAP_DEFAULT_PORT", 389); +define('OC_USER_BACKEND_LDAP_DEFAULT_PORT', 389); + +// define OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME +define('OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME', 'uid'); // register user backend OC_User::useBackend( "LDAP" ); diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php index b922ac99f98..e61d82bf8be 100644 --- a/apps/user_ldap/settings.php +++ b/apps/user_ldap/settings.php @@ -20,7 +20,7 @@ * License along with this library. If not, see . * */ -$params = array('ldap_host', 'ldap_port', 'ldap_dn', 'ldap_password', 'ldap_base', 'ldap_filter', 'ldap_tls'); +$params = array('ldap_host', 'ldap_port', 'ldap_dn', 'ldap_password', 'ldap_base', 'ldap_filter', 'ldap_display_name', 'ldap_tls'); foreach($params as $param){ if(isset($_POST[$param])){ @@ -42,4 +42,7 @@ foreach($params as $param){ // ldap_port has a default value $tmpl->assign( 'ldap_port', OC_Appconfig::getValue('user_ldap', 'ldap_port', OC_USER_BACKEND_LDAP_DEFAULT_PORT)); +// ldap_display_name has a default value +$tmpl->assign( 'ldap_display_name', OC_Appconfig::getValue('user_ldap', 'ldap_display_name', OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME)); + return $tmpl->fetchPage(); diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php index 374f1241741..8a879fa2466 100644 --- a/apps/user_ldap/templates/settings.php +++ b/apps/user_ldap/templates/settings.php @@ -1,13 +1,14 @@
LDAP -

-

-

- - Leave both empty for anonymous bind for search, then bind with users credentials.

-

-

+

+

+

+ + t('Leave both empty for anonymous bind for search, then bind with users credentials.');?>

+

+

+

>

diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index dd831f57aae..8557a7fde50 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -34,6 +34,7 @@ class OC_USER_LDAP extends OC_User_Backend { protected $ldap_base; protected $ldap_filter; protected $ldap_tls; + protected $ldap_display_name; function __construct() { $this->ldap_host = OC_Appconfig::getValue('user_ldap', 'ldap_host',''); @@ -43,12 +44,14 @@ class OC_USER_LDAP extends OC_User_Backend { $this->ldap_base = OC_Appconfig::getValue('user_ldap', 'ldap_base',''); $this->ldap_filter = OC_Appconfig::getValue('user_ldap', 'ldap_filter',''); $this->ldap_tls = OC_Appconfig::getValue('user_ldap', 'ldap_tls', 0); + $this->ldap_display_name = OC_Appconfig::getValue('user_ldap', 'ldap_display_name', OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME); if( !empty($this->ldap_host) && !empty($this->ldap_port) && ((!empty($this->ldap_dn) && !empty($this->ldap_password)) || (empty($this->ldap_dn) && empty($this->ldap_password))) && !empty($this->ldap_base) && !empty($this->ldap_filter) + && !empty($this->ldap_display_name) ) { $this->configured = true; @@ -90,15 +93,16 @@ class OC_USER_LDAP extends OC_User_Backend { return false; // get dn - $filter = str_replace("%uid", $uid, $this->ldap_filter); + $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"] == 0 ) + if( $entries['count'] == 0 ) return false; - return $entries[0]["dn"]; + return $entries[0]['dn']; } + public function checkPassword( $uid, $password ) { if(!$this->configured){ return false; @@ -131,22 +135,22 @@ class OC_USER_LDAP extends OC_User_Backend { return false; // get users - $filter = "objectClass=person"; + $filter = 'objectClass=person'; $sr = ldap_search( $this->getDs(), $this->ldap_base, $filter ); $entries = ldap_get_entries( $this->getDs(), $sr ); - - if( $entries["count"] == 0 ) + if( $entries['count'] == 0 ) return false; else { $users = array(); foreach($entries as $row) { - if(isset($row['uid'])) { - $users[] = $row['uid'][0]; + if(isset($row[$this->ldap_display_name])) { + $users[] = $row[$this->ldap_display_name][0]; } } + // TODO language specific sorting of user names + sort($users); + return $users; } - - return $users; } }