summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/ClientAPI/Signup.pm89
-rw-r--r--FS/FS/Conf.pm13
-rwxr-xr-xfs_selfservice/DEPLOY3
-rw-r--r--fs_selfservice/FS-SelfService/SelfService.pm26
-rwxr-xr-xfs_selfservice/FS-SelfService/cgi/signup.html45
5 files changed, 129 insertions, 47 deletions
diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm
index 61325b9e1..f5efc2dea 100644
--- a/FS/FS/ClientAPI/Signup.pm
+++ b/FS/FS/ClientAPI/Signup.pm
@@ -16,6 +16,7 @@ use FS::svc_acct_pop;
use FS::cust_main;
use FS::cust_pkg;
use FS::svc_acct;
+use FS::svc_phone;
use FS::acct_snarf;
use FS::queue;
use FS::reg_code;
@@ -29,6 +30,7 @@ sub signup_info {
warn "$me signup_info called on $packet\n" if $DEBUG;
my $conf = new FS::Conf;
+ my $svc_x = $conf->config('signup_server-service') || 'svc_acct';
my $cache = new FS::ClientAPI_SessionCache( {
'namespace' => 'FS::ClientAPI::Signup',
@@ -54,7 +56,7 @@ sub signup_info {
'options' => { $_->options },
%{$_->hashref}
} }
- grep { $_->svcpart('svc_acct') && $href->{ $_->pkgpart } }
+ grep { $_->svcpart($svc_x) && $href->{ $_->pkgpart } }
qsearch( 'part_pkg', { 'disabled' => '' } )
];
} qsearch('agent', { 'disabled' => '' })
@@ -118,6 +120,8 @@ sub signup_info {
'default_pkgpart' => scalar($conf->config('signup_server-default_pkgpart')),
+ 'signup_service' => $svc_x,
+
};
$cache->set('signup_info_cache', $signup_info_cache);
@@ -208,7 +212,7 @@ sub signup_info {
%{$_->hashref}
};
}
- grep { $_->svcpart('svc_acct') }
+ grep { $_->svcpart($svc_x) }
map { $_->part_pkg }
qsearchs( 'reg_code', { 'code' => $packet->{'reg_code'},
'agentnum' => $agentnum, } )
@@ -230,7 +234,7 @@ sub signup_info {
'options' => { $_->options },
%{$_->hashref}
} }
- grep { $_->svcpart('svc_acct') }
+ grep { $_->svcpart($svc_x) }
qsearch( 'part_pkg', { 'promo_code' => {
op=>'ILIKE',
value=>$packet->{'promo_code'}
@@ -317,15 +321,20 @@ sub new_customer {
my $packet = shift;
my $conf = new FS::Conf;
+ my $svc_x = $conf->config('signup_server-service') || 'svc_acct';
+
+ if ( $svc_x eq 'svc_acct' ) {
- #things that aren't necessary in base class, but are for signup server
- #return "Passwords don't match"
- # if $hashref->{'_password'} ne $hashref->{'_password2'}
- return { 'error' => gettext('empty_password') }
- unless length($packet->{'_password'});
- # a bit inefficient for large numbers of pops
- return { 'error' => gettext('no_access_number_selected') }
- unless $packet->{'popnum'} || !scalar(qsearch('svc_acct_pop',{} ));
+ #things that aren't necessary in base class, but are for signup server
+ #return "Passwords don't match"
+ # if $hashref->{'_password'} ne $hashref->{'_password2'}
+ return { 'error' => gettext('empty_password') }
+ unless length($packet->{'_password'});
+ # a bit inefficient for large numbers of pops
+ return { 'error' => gettext('no_access_number_selected') }
+ unless $packet->{'popnum'} || !scalar(qsearch('svc_acct_pop',{} ));
+
+ }
my $agentnum;
if ( exists $packet->{'session_id'} ) {
@@ -389,7 +398,7 @@ sub new_customer {
my $part_pkg =
qsearchs( 'part_pkg', { 'pkgpart' => $pkgpart } )
or return { 'error' => "WARNING: unknown pkgpart: $pkgpart" };
- my $svcpart = $part_pkg->svcpart('svc_acct');
+ my $svcpart = $part_pkg->svcpart($svc_x);
my $reg_code = '';
if ( $packet->{'reg_code'} ) {
@@ -407,31 +416,47 @@ sub new_customer {
#my $error = $cust_pkg->check;
#return { 'error' => $error } if $error;
- my $svc_acct = new FS::svc_acct ( {
- 'svcpart' => $svcpart,
- map { $_ => $packet->{$_} }
- qw( username _password sec_phrase popnum ),
- } );
+ #should be all auto-magic and shit
+ my $svc;
+ if ( $svc_x eq 'svc_acct' ) {
+
+ my $svc = new FS::svc_acct ( {
+ 'svcpart' => $svcpart,
+ map { $_ => $packet->{$_} }
+ qw( username _password sec_phrase popnum ),
+ } );
+
+ my @acct_snarf;
+ my $snarfnum = 1;
+ while ( exists($packet->{"snarf_machine$snarfnum"})
+ && length($packet->{"snarf_machine$snarfnum"}) ) {
+ my $acct_snarf = new FS::acct_snarf ( {
+ 'machine' => $packet->{"snarf_machine$snarfnum"},
+ 'protocol' => $packet->{"snarf_protocol$snarfnum"},
+ 'username' => $packet->{"snarf_username$snarfnum"},
+ '_password' => $packet->{"snarf_password$snarfnum"},
+ } );
+ $snarfnum++;
+ push @acct_snarf, $acct_snarf;
+ }
+ $svc->child_objects( \@acct_snarf );
- my @acct_snarf;
- my $snarfnum = 1;
- while ( exists($packet->{"snarf_machine$snarfnum"})
- && length($packet->{"snarf_machine$snarfnum"}) ) {
- my $acct_snarf = new FS::acct_snarf ( {
- 'machine' => $packet->{"snarf_machine$snarfnum"},
- 'protocol' => $packet->{"snarf_protocol$snarfnum"},
- 'username' => $packet->{"snarf_username$snarfnum"},
- '_password' => $packet->{"snarf_password$snarfnum"},
+ } elsif ( $svc_x eq 'svc_phone' ) {
+
+ my $svc = new FS::svc_phone ( {
+ 'svcpart' => $svcpart,
+ map { $_ => $packet->{$_} }
+ qw( countrycode phonenum pin ),
} );
- $snarfnum++;
- push @acct_snarf, $acct_snarf;
+
+ } else {
+ die "unknown signup service $svc_x";
}
- $svc_acct->child_objects( \@acct_snarf );
- my $y = $svc_acct->setdefault; # arguably should be in new method
+ my $y = $svc->setdefault; # arguably should be in new method
return { 'error' => $y } if $y && !ref($y);
- #$error = $svc_acct->check;
+ #$error = $svc->check;
#return { 'error' => $error } if $error;
#setup a job dependancy to delay provisioning
@@ -444,7 +469,7 @@ sub new_customer {
use Tie::RefHash;
tie my %hash, 'Tie::RefHash';
- %hash = ( $cust_pkg => [ $svc_acct ] );
+ %hash = ( $cust_pkg => [ $svc ] );
#msgcat
$error = $cust_main->insert(
\%hash,
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 4f460d93b..0fea39d89 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1257,7 +1257,7 @@ worry that config_items is freeside-specific and icky.
{
'key' => 'signup_server-default_pkgpart',
'section' => '',
- 'description' => 'Default pakcage for the signup server',
+ 'description' => 'Default package for the signup server',
'type' => 'select-sub',
'options_sub' => sub { require FS::Record;
require FS::part_pkg;
@@ -1278,6 +1278,17 @@ worry that config_items is freeside-specific and icky.
},
{
+ 'key' => 'signup_server-service',
+ 'section' => '',
+ 'description' => 'Service for the signup server - "Account (svc_acct)" is the default setting, or "Phone number (svc_phone)" for ITSP signup',
+ 'type' => 'select',
+ 'select_hash' => [
+ 'svc_acct' => 'Account (svc_acct)',
+ 'svc_phone' => 'Phone number (svc_phone)',
+ ],
+ },
+
+ {
'key' => 'show-msgcat-codes',
'section' => 'UI',
'description' => 'Show msgcat codes in error messages. Turn this option on before reporting errors to the mailing list.',
diff --git a/fs_selfservice/DEPLOY b/fs_selfservice/DEPLOY
index c93ed0fea..e73012f4b 100755
--- a/fs_selfservice/DEPLOY
+++ b/fs_selfservice/DEPLOY
@@ -10,7 +10,8 @@ cd FS-SelfService
perl Makefile.PL && make && make install
cd ..
-( cd ..; make deploy; cd fs_selfservice )
+#( cd ..; make deploy; cd fs_selfservice )
+( cd ..; make clean; make install-perl-modules; /etc/init.d/freeside restart; cd fs_selfservice )
#cp /home/ivan/freeside/fs_selfservice/FS-SelfService/cgi/* /var/www/MyAccount
#chown freeside /var/www/MyAccount/*.cgi
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm
index ec4668fe8..cbe7b72f6 100644
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ b/fs_selfservice/FS-SelfService/SelfService.pm
@@ -58,7 +58,7 @@ $socket .= '.'.$tag if defined $tag && length($tag);
'agent_info' => 'Agent/agent_info',
'agent_list_customers' => 'Agent/agent_list_customers',
);
-@EXPORT_OK = ( keys(%autoload), qw( regionselector expselect popselector domainselector) );
+@EXPORT_OK = ( keys(%autoload), qw( regionselector expselect popselector domainselector didselector) );
$ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin';
$ENV{'SHELL'} = '/bin/sh';
@@ -1437,6 +1437,30 @@ sub domainselector {
}
+=item didselector HASHREF | LIST
+
+Takes as input a hashref or list of key/value pairs with the following keys:
+
+=over 4
+
+=back
+
+Returns an HTML fragment for DID selection.
+
+=cut
+
+sub didselector {
+ my $param;
+ if ( ref($_[0]) ) {
+ $param = shift;
+ } else {
+ $param = { @_ };
+ }
+
+ return "choose your DID XXX";
+
+}
+
=back
=head1 RESELLER FUNCTIONS
diff --git a/fs_selfservice/FS-SelfService/cgi/signup.html b/fs_selfservice/FS-SelfService/cgi/signup.html
index 42334eade..30935f824 100755
--- a/fs_selfservice/FS-SelfService/cgi/signup.html
+++ b/fs_selfservice/FS-SelfService/cgi/signup.html
@@ -1,4 +1,4 @@
-<HTML><HEAD><TITLE><%= $agent || 'ISP' %> Signup form</TITLE></HEAD>
+<HTML><HEAD><TITLE><%= $agent || ( $signup_service eq 'svc_phone' ? 'ITSP' : 'ISP' ) %> Signup form</TITLE></HEAD>
<BODY BGCOLOR="#e8e8e8" onUnload="myclose()">
<script language="JavaScript"><!--
var mywindow = -1;
@@ -256,32 +256,51 @@ HTML::Widgets::SelectLayers->new(
</SELECT></TD>
</TR>
+<%=
+ if ( $signup_service eq 'svc_phone' ) {
+
+ $OUT .= '<TR><TD ALIGN="right">Phone number</TD><TD>'.
+ didselector().
+ '</TD></TR>';
+
+ $OUT .= <<ENDOUT;
+<TR>
+ <TD ALIGN="right">Voicemail PIN</TD>
+ <TD><INPUT TYPE="pin" NAME="pin" VALUE="$pin"></TD>
+</TR>
+ENDOUT
+
+ } else {
+
+ $OUT .= <<ENDOUT;
<TR>
<TD ALIGN="right">Username</TD>
- <TD><INPUT TYPE="text" NAME="username" VALUE="<%= $username %>"></TD>
+ <TD><INPUT TYPE="text" NAME="username" VALUE="$username"></TD>
</TR>
<TR>
<TD ALIGN="right">Password</TD>
- <TD><INPUT TYPE="password" NAME="_password" VALUE="<%= $_password %>"></TD>
+ <TD><INPUT TYPE="password" NAME="_password" VALUE="$_password"></TD>
</TR>
<TR>
<TD ALIGN="right">Re-enter Password</TD>
- <TD><INPUT TYPE="password" NAME="_password2" VALUE="<%= $_password2 %>"></TD>
+ <TD><INPUT TYPE="password" NAME="_password2" VALUE="$_password2"></TD>
</TR>
-<%=
- if ( $security_phrase ) {
- $OUT .= <<ENDOUT;
+ENDOUT
+
+ if ( $security_phrase ) {
+ $OUT .= <<SECPHRASE;
<TR>
<TD ALIGN="right">Security Phrase</TD>
<TD><INPUT TYPE="text" NAME="sec_phrase" VALUE="$sec_phrase">
</TD>
</TR>
-ENDOUT
- } else {
- $OUT .= '<INPUT TYPE="hidden" NAME="sec_phrase" VALUE="">';
+SECPHRASE
+ } else {
+ $OUT .= '<INPUT TYPE="hidden" NAME="sec_phrase" VALUE="">';
+ }
+
}
-%>
-<%=
+
if ( @svc_acct_pop ) {
$OUT .= '<TR><TD ALIGN="right">Access number</TD><TD>'.
popselector( 'popnum' => $popnum,
@@ -294,7 +313,9 @@ ENDOUT
} else {
$OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop);
}
+
%>
+
</TABLE>
<%=