- 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');
|
OC_APP::registerAdmin('user_ldap','settings');
|
||||||
|
|
||||||
// define LDAP_DEFAULT_PORT
|
// 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
|
// register user backend
|
||||||
OC_User::useBackend( "LDAP" );
|
OC_User::useBackend( "LDAP" );
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
* 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){
|
foreach($params as $param){
|
||||||
if(isset($_POST[$param])){
|
if(isset($_POST[$param])){
|
||||||
|
@ -42,4 +42,7 @@ foreach($params as $param){
|
||||||
// ldap_port has a default value
|
// ldap_port has a default value
|
||||||
$tmpl->assign( 'ldap_port', OC_Appconfig::getValue('user_ldap', 'ldap_port', OC_USER_BACKEND_LDAP_DEFAULT_PORT));
|
$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();
|
return $tmpl->fetchPage();
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
<form id="ldap" action="#" method="post">
|
<form id="ldap" action="#" method="post">
|
||||||
<fieldset class="personalblock">
|
<fieldset class="personalblock">
|
||||||
<legend><strong>LDAP</strong></legend>
|
<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>
|
<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">Port</label><input type="text" id="ldap_port" name="ldap_port" value="<?php echo $_['ldap_port']; ?>" /></p>
|
<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">Name</label><input type="text" id="ldap_dn" name="ldap_dn" value="<?php echo $_['ldap_dn']; ?>" />
|
<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">Password</label><input type="password" id="ldap_password" name="ldap_password" value="<?php echo $_['ldap_password']; ?>" />
|
<label for="ldap_password"><?php echo $l->t('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>
|
<?php echo $l->t('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']; ?>" />
|
<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">Filter (use %uid placeholder)</label><input type="text" id="ldap_filter" name="ldap_filter" value="<?php echo $_['ldap_filter']; ?>" /></p>
|
<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>
|
<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" />
|
<input type="submit" value="Save" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -34,6 +34,7 @@ class OC_USER_LDAP extends OC_User_Backend {
|
||||||
protected $ldap_base;
|
protected $ldap_base;
|
||||||
protected $ldap_filter;
|
protected $ldap_filter;
|
||||||
protected $ldap_tls;
|
protected $ldap_tls;
|
||||||
|
protected $ldap_display_name;
|
||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
$this->ldap_host = OC_Appconfig::getValue('user_ldap', 'ldap_host','');
|
$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_base = OC_Appconfig::getValue('user_ldap', 'ldap_base','');
|
||||||
$this->ldap_filter = OC_Appconfig::getValue('user_ldap', 'ldap_filter','');
|
$this->ldap_filter = OC_Appconfig::getValue('user_ldap', 'ldap_filter','');
|
||||||
$this->ldap_tls = OC_Appconfig::getValue('user_ldap', 'ldap_tls', 0);
|
$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)
|
if( !empty($this->ldap_host)
|
||||||
&& !empty($this->ldap_port)
|
&& !empty($this->ldap_port)
|
||||||
&& ((!empty($this->ldap_dn) && !empty($this->ldap_password)) || (empty($this->ldap_dn) && empty($this->ldap_password)))
|
&& ((!empty($this->ldap_dn) && !empty($this->ldap_password)) || (empty($this->ldap_dn) && empty($this->ldap_password)))
|
||||||
&& !empty($this->ldap_base)
|
&& !empty($this->ldap_base)
|
||||||
&& !empty($this->ldap_filter)
|
&& !empty($this->ldap_filter)
|
||||||
|
&& !empty($this->ldap_display_name)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$this->configured = true;
|
$this->configured = true;
|
||||||
|
@ -90,15 +93,16 @@ class OC_USER_LDAP extends OC_User_Backend {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// get dn
|
// 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 );
|
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );
|
||||||
$entries = ldap_get_entries( $this->getDs(), $sr );
|
$entries = ldap_get_entries( $this->getDs(), $sr );
|
||||||
|
|
||||||
if( $entries["count"] == 0 )
|
if( $entries['count'] == 0 )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return $entries[0]["dn"];
|
return $entries[0]['dn'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkPassword( $uid, $password ) {
|
public function checkPassword( $uid, $password ) {
|
||||||
if(!$this->configured){
|
if(!$this->configured){
|
||||||
return false;
|
return false;
|
||||||
|
@ -131,23 +135,23 @@ class OC_USER_LDAP extends OC_User_Backend {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// get users
|
// get users
|
||||||
$filter = "objectClass=person";
|
$filter = 'objectClass=person';
|
||||||
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );
|
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );
|
||||||
$entries = ldap_get_entries( $this->getDs(), $sr );
|
$entries = ldap_get_entries( $this->getDs(), $sr );
|
||||||
|
if( $entries['count'] == 0 )
|
||||||
if( $entries["count"] == 0 )
|
|
||||||
return false;
|
return false;
|
||||||
else {
|
else {
|
||||||
$users = array();
|
$users = array();
|
||||||
foreach($entries as $row) {
|
foreach($entries as $row) {
|
||||||
if(isset($row['uid'])) {
|
if(isset($row[$this->ldap_display_name])) {
|
||||||
$users[] = $row['uid'][0];
|
$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