);
   return { error => 'User not found.' } unless $svc_acct;
 
+  my $conf = new FS::Conf;
+  my $pkg_svc = $svc_acct->cust_svc->pkg_svc;
+  return { error => 'Only primary user may log in.' } 
+    if $conf->exists('selfservice_server-primary_only')
+       && ( ! $pkg_svc || $pkg_svc->primary_svc ne 'Y' );
 
   return { error => 'Incorrect password.' }
     unless $svc_acct->check_password($p->{'password'});
     $session->{'custnum'} = $cust_main->custnum;
   }
 
-  my $conf = new FS::Conf;
-  my $pkg_svc = $svc_acct->cust_svc->pkg_svc;
-  return { error => 'Only primary user may log in.' } 
-    if $conf->exists('selfservice_server-primary_only')
-       && ( ! $pkg_svc || $pkg_svc->primary ne 'Y' );
-
   my $session_id;
   do {
     $session_id = md5_hex(md5_hex(time(). {}. rand(). $$))