[freeside-commits] branch FREESIDE_3_BRANCH updated. 86febb0b6be50e2b237deb174a1f64aa347f4907

Ivan ivan at 420.am
Sun Jun 14 01:01:59 PDT 2015


The branch, FREESIDE_3_BRANCH has been updated
       via  86febb0b6be50e2b237deb174a1f64aa347f4907 (commit)
      from  8a73e21f9d41f4f8b5c750c514502f3cee86b5dd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 86febb0b6be50e2b237deb174a1f64aa347f4907
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sun Jun 14 01:01:56 2015 -0700

    when there are duplicate username at domain records and selfservice_server-primary_only is enabled, allow login with a primary service, RT#30750

diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 1152301..18e45a7 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -250,16 +250,39 @@ sub login {
     my $svc_domain = qsearchs('svc_domain', { 'domain' => $p->{'domain'} } )
       or return { error => 'Domain '. $p->{'domain'}. ' not found' };
 
-    my $svc_acct = qsearchs( 'svc_acct', { 'username'  => $p->{'username'},
-                                           'domsvc'    => $svc_domain->svcnum, }
-                           );
-    return { error => 'User not found.' } unless $svc_acct;
+    my @svc_acct = qsearch( 'svc_acct', { 'username'  => $p->{'username'},
+                                          'domsvc'    => $svc_domain->svcnum, }
+                          );
+
+    if ( $conf->exists('selfservice_server-login_svcpart') ) {
+      my @svcpart = $conf->config('selfservice_server-login_svcpart');
+      @svc_acct = grep { my $svcpart = $_->cust_svc->svcpart;
+                         scalar( grep( $_ eq $svcpart, @svcpart ) );
+                       }
+                    @svc_acct;
+    }
+
+    if ( $conf->exists('selfservice_server-primary_only') ) {
+        @svc_acct =
+          grep {
+            my $cust_svc = $_->cust_svc;
+            $cust_svc->cust_pkg->part_pkg->svcpart([qw( svc_acct svc_phone )])
+              == $cust_svc->svcpart
+          }
+          @svc_acct;
+    }
+
+    return { error => 'User not found.' } unless @svc_acct;
+
+    #return { error => 'Multiple users.' } if scalar(@svc_acct) > 1;
+
+    my $svc_acct = $svc_acct[0];
 
-    if($conf->exists('selfservice_server-login_svcpart')) {
-	my @svcpart = $conf->config('selfservice_server-login_svcpart');
-	my $svcpart = $svc_acct->cust_svc->svcpart;
-	return { error => 'Invalid user.' } 
-	    unless grep($_ eq $svcpart, @svcpart);
+    if ( $conf->exists('selfservice_server-login_svcpart') ) {
+      my @svcpart = $conf->config('selfservice_server-login_svcpart');
+      my $svcpart = $svc_acct->cust_svc->svcpart;
+      return { error => 'Invalid user.' } 
+        unless grep($_ eq $svcpart, @svcpart);
     }
 
     return { error => 'Incorrect password.' }

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/ClientAPI/MyAccount.pm |   41 ++++++++++++++++++++++++++++++++---------
 1 file changed, 32 insertions(+), 9 deletions(-)




More information about the freeside-commits mailing list