- 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
This commit is contained in:
parent
cff6a41e2b
commit
bf84aa23f4
|
@ -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" );
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue