*/ class LSauth { static private $authData=NULL; var $params = array ( 'displayLoginForm' => true, 'displayLogoutBtn' => true ); /** * Check Post Data * * @retval boolean True if post data permit the authentification or False **/ public function getPostData() { if (isset($_POST['LSsession_user']) && !empty($_POST['LSsession_user'])) { $this -> authData = array( 'username' => $_POST['LSsession_user'], 'password' => $_POST['LSsession_pwd'], 'ldapserver' => $_POST['LSsession_ldapserver'], 'topDn' => $_POST['LSsession_topDn'] ); return true; } return; } /** * Check user login * * @param[in] $username The username * @param[in] $password The password * * @retval LSldapObject|false The LSldapObject of the user authificated or false */ public function authenticate() { if (LSsession :: loadLSobject(LSsession :: $ldapServer['authObjectType'])) { $authobject = new LSsession :: $ldapServer['authObjectType'](); $result = $authobject -> searchObject( $this -> authData['username'], LSsession :: getTopDn(), LSsession :: $ldapServer['authObjectFilter'] ); $nbresult=count($result); if ($nbresult==0) { // identifiant incorrect LSdebug('identifiant incorrect'); LSerror :: addErrorCode('LSauth_01'); } else if ($nbresult>1) { // duplication d'authentité LSerror :: addErrorCode('LSauth_02'); } elseif ( $this -> checkUserPwd($result[0],$this -> authData['password']) ) { // Authentication succeeded return $result[0]; } else { LSerror :: addErrorCode('LSauth_01'); LSdebug('mdp incorrect'); } } else { LSerror :: addErrorCode('LSauth_03'); } return; } /** * Test un couple LSobject/pwd * * Test un bind sur le serveur avec le dn de l'objet et le mot de passe fourni. * * @param[in] LSobject L'object "user" pour l'authentification * @param[in] string Le mot de passe à tester * * @retval boolean True si l'authentification à réussi, false sinon. */ public static function checkUserPwd($object,$pwd) { return LSldap :: checkBind($object -> getValue('dn'),$pwd); } /** * Define if login form can be displayed or not * * @retval boolean **/ public function __get($key) { if ($key=='params') { return $this -> params; } return; } /** * Logout * * @retval void **/ public function logout() { // Do nothing in the standard LSauth class } } /* * Error Codes */ LSerror :: defineError('LSauth_01', _("LSauth : Login or password incorrect.") ); LSerror :: defineError('LSauth_02', _("LSauth : Impossible to identify you : Duplication of identities.") ); LSerror :: defineError('LSauth_03', _("LSsession : Could not load type of identifiable objects.") ); ?>