* @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.1.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; /** * internal user id * @var mixed $_userId */ var $_userId; /** * user data * @var array $_userFlags */ var $_userData = array(); /** * user flags, if there are any * @var array $_userFlags */ var $_userFlags = 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->_userId = $this->_sess->get( 'wbAuth:userid' ); $this->_userData = $this->_sess->get( 'wbAuth:userdata' ); $this->_userFlags = $this->_sess->get( 'wbAuth:userflags' ); } } /** * 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 getUserId() { return $this->_userId; } /** * recieve user data * * @access public * @return array $data */ function getUserData() { return $this->_userData; } /** * recieve user flags * * @access public * @return array $data */ function getUserFlags() { return $this->_userFlags; } /** * 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->_userId = $this->_handler->getUserId(); $this->_userData = $this->_handler->getUserData(); // remeber in session $this->_sess->set( 'wbAuth:authenticated', true ); $this->_sess->set( 'wbAuth:userid', $this->_userId ); $this->_sess->set( 'wbAuth:userdata', $this->_userData ); $this->_userFlags = array(); if( isset( $this->_userData['flags'] ) ) { $this->_userFlags = explode( ',', $this->_userData['flags'] ); } $this->_sess->set( 'wbAuth:userflags', $this->_userFlags ); 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() ); $this->_sess->set( 'wbAuth:userflags', 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; } } ?>