new customer_short opens a session, RT#24968
authorIvan Kohler <ivan@freeside.biz>
Mon, 2 Dec 2013 01:25:22 +0000 (17:25 -0800)
committerIvan Kohler <ivan@freeside.biz>
Mon, 2 Dec 2013 01:25:22 +0000 (17:25 -0800)
FS/FS/ClientAPI/Signup.pm

index 593c426..957945c 100644 (file)
@@ -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;