From bf84aa23f40980bae72ced15b1830d6e4dfc49eb Mon Sep 17 00:00:00 2001 From: Markus Kalkbrenner <markus.kalkbrenner@bio.logis.de> 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 7906241f79..3261708f59 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 b922ac99f9..e61d82bf8b 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 <http://www.gnu.org/licenses/>. * */ -$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 374f124174..8a879fa246 100644 --- a/apps/user_ldap/templates/settings.php +++ b/apps/user_ldap/templates/settings.php @@ -1,13 +1,14 @@ <form id="ldap" action="#" method="post"> <fieldset class="personalblock"> <legend><strong>LDAP</strong></legend> - <p><label for="ldap_host">Host<input type="text" id="ldap_host" name="ldap_host" value="<?php echo $_['ldap_host']; ?>"></label> - <label for="ldap_port">Port</label><input type="text" id="ldap_port" name="ldap_port" value="<?php echo $_['ldap_port']; ?>" /></p> - <p><label for="ldap_dn">Name</label><input type="text" id="ldap_dn" name="ldap_dn" value="<?php echo $_['ldap_dn']; ?>" /> - <label for="ldap_password">Password</label><input type="password" id="ldap_password" name="ldap_password" value="<?php echo $_['ldap_password']; ?>" /> - Leave both empty for anonymous bind for search, then bind with users credentials.</p> - <p><label for="ldap_base">Base</label><input type="text" id="ldap_base" name="ldap_base" value="<?php echo $_['ldap_base']; ?>" /> - <label for="ldap_filter">Filter (use %uid placeholder)</label><input type="text" id="ldap_filter" name="ldap_filter" value="<?php echo $_['ldap_filter']; ?>" /></p> + <p><label for="ldap_host"><?php echo $l->t('Host');?><input type="text" id="ldap_host" name="ldap_host" value="<?php echo $_['ldap_host']; ?>"></label> + <label for="ldap_port"><?php echo $l->t('Port');?></label><input type="text" id="ldap_port" name="ldap_port" value="<?php echo $_['ldap_port']; ?>" /></p> + <p><label for="ldap_dn"><?php echo $l->t('Name');?></label><input type="text" id="ldap_dn" name="ldap_dn" value="<?php echo $_['ldap_dn']; ?>" /> + <label for="ldap_password"><?php echo $l->t('Password');?></label><input type="password" id="ldap_password" name="ldap_password" value="<?php echo $_['ldap_password']; ?>" /> + <?php echo $l->t('Leave both empty for anonymous bind for search, then bind with users credentials.');?></p> + <p><label for="ldap_base"><?php echo $l->t('Base');?></label><input type="text" id="ldap_base" name="ldap_base" value="<?php echo $_['ldap_base']; ?>" /> + <label for="ldap_filter"><?php echo $l->t('Filter (use %uid placeholder)');?></label><input type="text" id="ldap_filter" name="ldap_filter" value="<?php echo $_['ldap_filter']; ?>" /></p> + <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']; ?>" /></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> <input type="submit" value="Save" /> </fieldset> diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index dd831f57aa..8557a7fde5 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; } } -- GitLab