LifeType 中文開發論壇

開發 => 外掛程式 => 主題作者是: ★天秤女★佳佳 於 九月 10, 2007, 03:52:38 下午



主題: LifeType跟單一帳號(LDAP)結合的問題!
作者: ★天秤女★佳佳九月 10, 2007, 03:52:38 下午
我現在有一個單一入口網
帳號密碼打入之後
再到LifeType註冊帳號
這樣就不會隨便人都來LifeType註冊 :'(

想請問這段怎麼連接
plugin或是看官方文件有沒有內建這樣的功能??
我找ldap的文章都沒看到
:-S

thanks



主題: Re: LifeType跟單一帳號(LDAP)結合的問題!
作者: lss九月 11, 2007, 07:45:05 上午
使用 LDAP 做認證,以目前 LifeType 的架構可以支援,但據我所知,目前沒有人實作。

先看看這裡 (http://wiki.lifetype.net/index.php/User_data_providers#Developing_custom_providers)瞭解一下什麼是 userdata provider 。

相關檔案包括 config/userdata.properties.php 和 class/dao/userdata 目錄下目前支援的各種 userdata provider 。

你可以參考現有 userdata provider 的寫法自行寫一個 ldapuserdataprovider.class.php 來達成你的目的。

完成了記得來分享哦!

lss


主題: Re: LifeType跟单一帐号(LDAP)结合的问题!
作者: chax九月 20, 2007, 08:18:06 上午
我是直接在dousercreation.class.php中加入一步ldap认证,写的不规范;但是勉强可以达到先通过ldap认证才能注册的目的。
代码如下:
程式碼:
			//ldapauth        	
$ldap_server="ldap1.swufe.edu.cn";
$ldap_basedn="********";
$ldap_bindcn="*****".$ldap_basedn;
$ldap_passwd="******";
$ds=ldap_connect($ldap_server);
$dn = "ou=teacher,".$ldap_basedn;
$filter="uid=".$this->userName;
if ($ds)
{
    $r=ldap_bind($ds);
  $sr=ldap_search($ds,$dn,$filter);
    $s_n=ldap_count_entries($ds,$sr);
    if ($s_n!=1)
      {
$this->_view = new SummaryUserCreationView();
//$this->_form->hasRun( true );
$this->_form->setFieldValidationStatus( "userName", false );
$this->setCommonData( true );
  ldap_close($ds);
return false;
      }
    $info = ldap_get_entries($ds, $sr);
    $ldn=$info[0]["dn"];
    @$lbind=ldap_bind($ds,$ldn,$this->userPassword);
    if (!$lbind)
      {
            $this->_view = new SummaryUserCreationView();
                $this->_view->setErrorMessage( $this->_locale->tr("error_invalid_password"));
$this->_form->setFieldValidationStatus( "userPassword", false );               
                $this->setCommonData( true );
                  ldap_close($ds);
                return false;
      }
} else {
    $this->_view = new SummaryUserCreationView();
                $this->_view->setErrorMessage( $this->_locale->tr("can_not_connect_ldap"));
$this->_form->setFieldValidationStatus( "userPasswordCheck", false );               
                $this->setCommonData( true );
                  ldap_close($ds);
                return false;
}