00001 <?php
00002 $iOldErrorReproting = error_reporting();
00003 error_reporting($iOldErrorReproting & ~E_STRICT);
00004
00005 $sPathExtra = getShopBasePath()."core/openid";
00006 $sPath = ini_get('include_path');
00007 $sPath = $sPathExtra . ':' . $sPath;
00008 ini_set('include_path', $sPath);
00009
00010 require_once "openid/Auth/OpenID/Consumer.php";
00011 require_once "openid/Auth/OpenID/FileStore.php";
00012 require_once "openid/Auth/OpenID/SReg.php";
00013
00014 error_reporting($iOldErrorReproting);
00021 class oxOpenId extends oxBase
00022 {
00031 public function authenticateOid( $sOpenId, $sReturnUrl )
00032 {
00033 $myConfig = $this->getConfig();
00034
00035 $oConsumer = $this->_getConsumer();
00036
00037
00038
00039 $oAuth = $oConsumer->begin($sOpenId);
00040 if ( !$oAuth ) {
00041
00042 $oEx = oxNew( 'oxUserException' );
00043 $oEx->setMessage( 'EXCEPTION_USER_NOVALIDOPENID' );
00044 throw $oEx;
00045 }
00046
00047
00048 $oAuth->addExtension( Auth_OpenID_SRegRequest::build( array( 'email', 'fullname', 'gender', 'country' ), array( 'postcode' ) ) );
00049
00050
00051 $sUrl = $oAuth->redirectURL( $myConfig->getShopUrl(), $sReturnUrl);
00052 oxUtils::getInstance()->redirect( $sUrl, false );
00053
00054 }
00055
00063 public function getOidResponse( $sReturnUrl )
00064 {
00065
00066 $oConsumer = $this->_getConsumer();
00067 $oResponse = $oConsumer->complete( $sReturnUrl );
00068
00069
00070 if ( $oResponse->status == Auth_OpenID_SUCCESS ) {
00071
00072 $oSRreg = $this->_getResponse();
00073 $oRet = $oSRreg->fromSuccessResponse( $oResponse );
00074 $aData = $oRet->contents();
00075 } elseif ( $oResponse->status == Auth_OpenID_CANCEL ) {
00076
00077 $oEx = oxNew( 'oxUserException' );
00078 $oEx->setMessage( 'EXCEPTION_USER_OPENIDCANCELED' );
00079 throw $oEx;
00080 } else {
00081
00082 $oEx = oxNew( 'oxUserException' );
00083 $oLang = oxLang::getInstance();
00084 $oEx->setMessage( sprintf($oLang->translateString( 'EXCEPTION_USER_OPENIDVALIDFAILED', $oLang->getBaseLanguage() ), $oResponse->message) );
00085 throw $oEx;
00086 }
00087 return $aData;
00088 }
00089
00095 protected function _getConsumer()
00096 {
00097 $oConsumer = new Auth_OpenID_Consumer( $this->_getStore(), oxOpenIdSession::getInstance() );
00098
00099 return $oConsumer;
00100 }
00101
00107 protected function _getResponse()
00108 {
00109 $oSRreg = new Auth_OpenID_SRegResponse();
00110
00111 return $oSRreg;
00112 }
00113
00120 protected function _getStore()
00121 {
00122
00123 $oStore = new Auth_OpenID_FileStore( oxConfig::getInstance()->getConfigParam( 'sCompileDir' ) );
00124 return $oStore;
00125 }
00126 }