XOOPS完全整合LDAP--直接註冊使用者到LDAP


,

作者:cosseto

讓XOOPS完全整合LDAP,就是說要可以更改密碼等等資訊到LDAP....。

(1)mainfile.php
加入下列定義


[size=medium]//Define LDAP HOST
define('LDAP_HOST', 'IP 或 網址');
define('LDAP_ADMIN_DN', '管理的DN');
define('LDAP_ADMIN_PW', '管理的密碼');
define('LDAP_BASE_DN', 'uid=%s,查詢user的dn');[/size]

寫入使用者的DN那個位置有個注意事項(格式)
uid=%s 是為了要增加使用者留下的位置。dn的屬性皆不可以留空白
其他看需要可能會再增加。

(2)register.php
加入下面的函數定義

[size=medium]
function
NewToLDAP($uname, $email, $pass)
{
    
//LDAP Regist STEP
    
$ldap = ldap_connect(LDAP_HOST) or die('1');
    
$ldap_bind = ldap_bind($ldap, LDAP_ADMIN_DN, LDAP_ADMIN_PW) or die('2');
    
//$uname, $email, $pass, $vpass
    
$info['cn'] = $uname;
    
$info['sn'] = $uname;
    
$info['mail'] = $email;
    
$info['userPassword'] = "{md5}".base64_encode(pack("H*",md5($pass)));
    
//objectClass: posixAccount, objectClass: top, objectClass: inetOrgPerson,
    
$info['objectClass'] = 'posixAccount';
    
$info['objectClass'] = 'top';
    
$info['objectClass'] = 'inetOrgPerson';
    
//To ADD
    
ldap_add($ldap, sprintf(LDAP_BASE_DN,$uname), $info)
        or die(
sprintf("%s(%s)",ldap_error($ldap),ldap_errno($ldap)));
    
//unbine, close
    
ldap_unbind($ldap);
    
ldap_close($ldap);
}
[/
size]


然後在下面區段之前

if ( empty($stop) ) {
        
$member_handler =& xoops_gethandler('member');
        
$newuser =& $member_handler->createUser();
        
$newuser->setVar('user_viewemail',$user_viewemail, true);
        
$newuser->setVar('uname', $uname, true);
        
$newuser->setVar('email', $email, true);


加入

[size=medium]//Add to LDAP
if( empty($stop) ) {
    
NewToLDAP($uname, $email, $pass);
}
[/
size]


以上僅在LDAP裡面登記基本的帳號密碼資料,之後再對細部的項目修改,畢竟主要需要認證的部份就只有帳號密碼而已。

接下來要改
(1)編輯使用者的部份(針對密碼、信箱等等)
(2)管理者編輯使用者部份(針對密碼、信箱等等)