* @copyright 2004 by http://wombat.exit0.net * @package wombatSite * @subpackage user */ /** * main authentication controller * * loads authentication modules and collects user data for wbSite * * @version 1.0.0 * @package wombatSite * @subpackage user */ class wbAuth { /** * patSession object * @var object $_sess */ var $_sess; /** * login handöer * @var object $_sess */ var $_handler; /** * is user authenticated * @var object $_authenticated */ var $_authenticated = false; /** * user data * @var array $_sess */ var $_userData = array(); /** * authentication config * @var array $_config */ var $_config = array(); /** * constructor * * @access public */ function __construct( $config ) { $this->_config = $config; $this->_sess =& wbFactory::singleton( 'patSession' ); $this->_authenticated = $this->_sess->get( 'wbauth_authenticated' ); if( $this->_authenticated ) { $this->_userData = $this->_sess->get( 'wbauth_userdata' ); } } /** * abAuth constructor wrapper for PHP4 * * @access public * @see __construct() */ function wbAuth( $config ) { $this->__construct( $config ); } /** * is authenticated * * @access public * @return boolean true if user is logged in */ function isAuthenticated() { return $this->_authenticated; } /** * recieve user data * * @access public * @return array $data */ function getUserData() { return $this->_userData; } /** * try to login * * @access public * @param string $user user name * @param string $password user password * @return boolean $result true if user is logged in */ function login( $user, $password ) { $res = $this->_loadHandler(); if( patErrorManager::isError( $res ) ) { return $res; } $res = $this->_handler->login( $user, $password ); if( patErrorManager::isError( $res ) ) { return $res; } // login failed if( !$res ) { return false; } // store data in current instance $this->_authenticated = true; $this->_userData = $this->_handler->getUserData(); // remeber in session $this->_sess->set( 'wbauth_authenticated', true ); $this->_sess->set( 'wbauth_userdata', $this->_userData ); return true; } /** * logout user * * @access public * @return boolean $result true on success */ function logoff() { $res = $this->_loadHandler(); if( patErrorManager::isError( $res ) ) { return $res; } $res = $this->_handler->logoff(); if( patErrorManager::isError( $res ) ) { return $res; } $this->_authenticated = false; $this->_userData = array(); $this->_sess->set( 'wbauth_authenticated', false ); $this->_sess->set( 'wbauth_userdata', array() ); return true; } /** * abAuth constructor wrapper for PHP4 * * @access public * @see __construct() */ function _loadHandler() { $authHandler = 'Wombat'; if( isset( $this->_config['handler'] ) ) { $authHandler = $this->_config['handler']; } $params = array( 'config' => $this->_config ); $this->_handler =& wbFactory::singleton( 'wbAuth_' . $authHandler, $params ); if( patErrorManager::isError( $this->_handler ) ) { return $this->_handler; } return true; } } ?>