X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=fs_selfservice%2Fwordpress%2Ffreeside_selfservice.php;h=852c22e75eafc693406254bfa9f819498c6eb429;hb=b48c02a92562395c84dbfe8c47db5c4ba14891a0;hp=2041eed9049c4e7e2e1355884923573db37515dd;hpb=e223601ee73eee830729052d221b2af3d0d2233b;p=freeside.git diff --git a/fs_selfservice/wordpress/freeside_selfservice.php b/fs_selfservice/wordpress/freeside_selfservice.php index 2041eed90..852c22e75 100644 --- a/fs_selfservice/wordpress/freeside_selfservice.php +++ b/fs_selfservice/wordpress/freeside_selfservice.php @@ -1,24 +1,116 @@ + + logout( array( + 'session_id' => $_COOKIE['freeside_session_id'], + ) ); + setcookie('freeside_session_id', '', time() - 3600); + $error = $response['error']; + if ( $error ) { + error_log("Logout error: $error"); + } + return; + } + + if ( ! $GLOBALS['FREESIDE_PROCESS_LOGIN'] ) { + return; + } else { + $GLOBALS['FREESIDE_PROCESS_LOGIN'] = false; + } + + $freeside = new FreesideSelfService(); + + $response = $freeside->login( array( + 'email' => strtolower($_POST['freeside_email']), + 'username' => strtolower($_POST['freeside_username']), + 'domain' => strtolower($_POST['freeside_domain']), + 'password' => $_POST['freeside_password'], + ) ); + + #error_log("[login] received response from freeside: $response"); + + $error = $response['error']; + error_log($error); + + if ( $error ) { + + $url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://'; + $url .= $_SERVER['SERVER_NAME']; + $url .= $_SERVER['REQUEST_URI']; + + wp_redirect(dirname($url). '/example_login.php?'. + 'username='. urlencode($_POST['freeside_username']). + '&domain='. urlencode($_POST['freeside_domain']). + '&email='. urlencode($_POST['freeside_email']). + '&freeside_error='. urlencode($error) + ); + exit; + + } + + // sucessful login + + $session_id = $response['session_id']; + + //error_log("[login] logged into freeside with session_id=$freeside_session_id, setting cookie"); + + setcookie('freeside_session_id', $session_id); + + $GLOBALS['FREESIDE_LOGIN_RESPONSE'] = $response; + } -function flatten($hash) { +function freeside_flatten($hash) { if ( !is_array($hash) ) return $hash; $flat = array(); @@ -34,31 +126,26 @@ function flatten($hash) { return($flat); } -class FreesideSelfService { - - //Change this to match the location of your selfservice xmlrpc.cgi or daemon - #var $URL = 'https://localhost/selfservice/xmlrpc.cgi'; - # XXX freeide_selfservice_url config value - #var $URL = 'http://localhost/selfservice/xmlrpc.cgi'; - var $URL = get_opgion('freeside_selfservice_url'); +class FreesideSelfService { function FreesideSelfService() { $this; } public function __call($name, $arguments) { + + $URL = 'http://'. get_option('freeside_server'). ':8080'; + //error_log("[FreesideSelfService] $name called, sending to ". $URL); - error_log("[FreesideSelfService] $name called, sending to ". $this->URL); - - $request = xmlrpc_encode_request("FS.ClientAPI_XMLRPC.$name", flatten($arguments[0])); + $request = xmlrpc_encode_request("FS.ClientAPI_XMLRPC.$name", freeside_flatten($arguments[0])); $context = stream_context_create( array( 'http' => array( 'method' => "POST", 'header' => "Content-Type: text/xml", 'content' => $request ))); - $file = file_get_contents($this->URL, false, $context); + $file = file_get_contents($URL, false, $context); $response = xmlrpc_decode($file); - if (xmlrpc_is_fault($response)) { + if (isset($response) && xmlrpc_is_fault($response)) { trigger_error("[FreesideSelfService] XML-RPC communication error: $response[faultString] ($response[faultCode])"); } else { //error_log("[FreesideSelfService] $response");