X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FSignup.pm;h=957945c76d8802c758f1f6789d726590bcdcdb7c;hb=281d78519501a96934a500270810d4af5b4aaa73;hp=593c426b59e3ff351939ea1fc738fe588f38eaef;hpb=4ed0a352b2319c2fc14ee7af09a21caf727e7b12;p=freeside.git diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm index 593c426b5..957945c76 100644 --- a/FS/FS/ClientAPI/Signup.pm +++ b/FS/FS/ClientAPI/Signup.pm @@ -4,6 +4,7 @@ use strict; use vars qw( $DEBUG $me ); use Data::Dumper; use Tie::RefHash; +use Digest::SHA qw(sha512_hex); use FS::Conf; use FS::Record qw(qsearch qsearchs dbdef); use FS::CGI qw(popurl); @@ -996,9 +997,19 @@ sub new_customer_minimal { ); return { 'error' => $error } if $error; + my $session = { 'custnum' => $cust_main->custnum }; + + my $session_id; + do { + $session_id = sha1_hex(time(). {}. rand(). $$) + } until ( ! defined _myaccount_cache->get($session_id) ); #just in case + + _cache->set( $session_id, $session, '1 hour' ); # 1 hour? + my %return = ( 'error' => '', 'signup_service' => $svc_x, 'custnum' => $cust_main->custnum, + 'session_id' => $session_id, ); if ( $svc[0] ) { @@ -1023,6 +1034,13 @@ sub new_customer_minimal { } +use vars qw( $myaccount_cache ); +sub _myaccount_cache { + $myaccount_cache ||= new FS::ClientAPI_SessionCache( { + 'namespace' => 'FS::ClientAPI::MyAccount', + } ); +} + sub capture_payment { my $packet = shift;