From: Ivan Kohler Date: Mon, 2 Dec 2013 01:25:22 +0000 (-0800) Subject: new customer_short opens a session, RT#24968 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=281d78519501a96934a500270810d4af5b4aaa73 new customer_short opens a session, RT#24968 --- 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;