*/ class LSauth { static private $authData=NULL; static private $authObject=NULL; static private $config=array(); static private $provider=NULL; static private $params = array ( 'displayLoginForm' => true, 'displayLogoutBtn' => true, 'displaySelfAccess' => true ); public static function start() { LSdebug('LSauth :: start()'); // Load Config if (isset(LSsession :: $ldapServer['LSauth']) && is_array(LSsession :: $ldapServer['LSauth'])) { self :: $config = LSsession :: $ldapServer['LSauth']; } if (!LSsession :: loadLSclass('LSauthMethod')) { LSdebug('LSauth :: Failed to load LSauthMethod'); return; } if (!isset(self :: $config['method'])) { self :: $config['method']='basic'; } $class='LSauthMethod_'.self :: $config['method']; LSdebug('LSauth : provider -> '.$class); if (LSsession :: loadLSclass($class)) { self :: $provider = new $class(); if (!self :: $provider) { LSerror :: addErrorCode('LSauth_05',self :: $config['method']); } LSdebug('LSauth : Provider Started !'); return true; } else { LSerror :: addErrorCode('LSauth_04',self :: $config['method']); return; } } public static function forceAuthentication() { LSdebug('LSauth :: forceAuthentication()'); if (!is_null(self :: $provider)) { self :: $authData = self :: $provider -> getAuthData(); if (self :: $authData) { self :: $authObject = self :: $provider -> authenticate(); return self :: $authObject; } // No data : user has not filled the login form LSdebug('LSauth : No data -> user has not filled the login form'); return; } LSerror :: addErrorCode('LSauth_06'); return; } /** * Get LDAP credentials * * Return LDAP credentials or false * * @params[in] $user The LSldapObject of the user authificated * * @retval Array|false Array of LDAP credentials array('dn','pwd') or False **/ public static function getLDAPcredentials($user) { return self :: $provider -> getLDAPcredentials($user); } /** * Logout * * @retval void **/ public static function logout() { if (!is_null(self :: $provider)) { return self :: $provider -> logout(); } LSerror :: addErrorCode('LSauth_06'); return; } /** * After logout * * This method is run by LSsession after the local session was * was successfully destroyed. * * @retval void **/ public static function afterLogout() { if (!is_null(self :: $provider)) { return self :: $provider -> afterLogout(); } LSerror :: addErrorCode('LSauth_06'); return; } /** * Disable logout button in LSauth parameters * * @retval void **/ public static function disableLogoutBtn() { self :: $params['displayLogoutBtn'] = false; } /** * Can display or not logout button in LSauth parameters * * @retval boolean **/ public static function displayLogoutBtn() { return self :: $params['displayLogoutBtn']; } /** * Disable self access * * @retval void **/ public static function disableSelfAccess() { self :: $params['displaySelfAccess'] = false; } /** * Can display or not self access * * @retval boolean **/ public static function displaySelfAccess() { return self :: $params['displaySelfAccess']; } /* * For compatibillity until loginForm is migrated in LSauth */ public static function disableLoginForm() { self :: $params['displayLoginForm'] = false; } public static function displayLoginForm() { return self :: $params['displayLoginForm']; } } /* * 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', _("LSauth : Could not load type of identifiable objects.") ); LSerror :: defineError('LSauth_04', _("LSauth : Can't load authentication method %{method}.") ); LSerror :: defineError('LSauth_05', _("LSauth : Failed to build the authentication provider %{method}.") ); LSerror :: defineError('LSauth_06', _("LSauth : Not correctly initialized.") ); LSerror :: defineError('LSauth_07', _("LSauth : Failed to get authentication informations from provider.") );