oxopenid.php

Go to the documentation of this file.
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         // create OpenID consumer
00035         $oConsumer = $this->_getConsumer();
00036     
00037         // begin sign-in process
00038         // creates an authentication request to the OpenID provider
00039         $oAuth = $oConsumer->begin($sOpenId);
00040         if ( !$oAuth ) {
00041             //not valid OpenId
00042             $oEx = oxNew( 'oxUserException' );
00043             $oEx->setMessage( 'EXCEPTION_USER_NOVALIDOPENID' );
00044             throw $oEx;
00045         }
00046 
00047         // create request for registration data
00048         $oAuth->addExtension( Auth_OpenID_SRegRequest::build( array( 'email', 'fullname', 'gender', 'country' ), array( 'postcode' ) ) );
00049 
00050         // redirect to OpenID provider for authentication
00051         $sUrl = $oAuth->redirectURL( $myConfig->getShopUrl(), $sReturnUrl);
00052         oxUtils::getInstance()->redirect( $sUrl, false );
00053         
00054     }
00055 
00063     public function getOidResponse( $sReturnUrl )
00064     {
00065         // create OpenID consumer
00066         $oConsumer = $this->_getConsumer();
00067         $oResponse = $oConsumer->complete( $sReturnUrl );
00068 
00069         // authentication results
00070         if ( $oResponse->status == Auth_OpenID_SUCCESS ) {
00071             // get registration information
00072             $oSRreg = $this->_getResponse();
00073             $oRet   = $oSRreg->fromSuccessResponse( $oResponse );
00074             $aData  = $oRet->contents();
00075         } elseif ( $oResponse->status == Auth_OpenID_CANCEL ) {
00076             //Verification Cancelled by user
00077             $oEx = oxNew( 'oxUserException' );
00078             $oEx->setMessage( 'EXCEPTION_USER_OPENIDCANCELED' );
00079             throw $oEx;
00080         } else {
00081             //OpenID authentication failed
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         // create file storage area for OpenID data
00123         $oStore = new Auth_OpenID_FileStore( oxConfig::getInstance()->getConfigParam( 'sCompileDir' ) );
00124         return $oStore;
00125     }
00126 }

Generated on Thu Feb 19 15:02:22 2009 for OXID eShop CE by  doxygen 1.5.5