sipwise export, part 2
[freeside.git] / FS / FS / svc_acct.pm
index 53b12f1..67fce41 100644 (file)
@@ -72,7 +72,7 @@ FS::UID->install_callback( sub {
   $passwordmin = ( defined($passwordmin) && $passwordmin =~ /\d+/ )
                    ? $passwordmin
                    : 6;
-  $passwordmax = $conf->config('passwordmax') || 8;
+  $passwordmax = $conf->config('passwordmax') || 12;
   $username_letter = $conf->exists('username-letter');
   $username_letterfirst = $conf->exists('username-letterfirst');
   $username_noperiod = $conf->exists('username-noperiod');
@@ -297,7 +297,7 @@ sub table_info {
                          disable_inventory => 1,
                        },
         '_password' => { label => 'Password',
-                         required => 1
+          #required => 1
                        },
         'gid'       => {
                          label    => 'GID',
@@ -713,14 +713,21 @@ sub insert {
 
       # slight false laziness w/ edit/process/cust_main.cgi...
       # and also slightly arbitrary behavior.
-      # if the "real name" of this account matches the first + last name
-      # of a contact, attach the email address to that person.
-      my @contacts = map { $_->contact } $cust_main->cust_contact;
-      my $myname = $self->get('finger');
-      my ($contact) =
-        grep { $_->get('first') . ' ' . $_->get('last') eq $myname } @contacts;
-      # otherwise just pick the first one
-      $contact ||= $contacts[0];
+      #
+      # this will never happen but check it anyway
+      my ($contact) = map { $_->contact }
+        qsearch('contact_email', { emailaddress => $self->email });
+
+      if (!$contact) {
+        # if the "real name" of this account matches the first + last name
+        # of a contact, attach the email address to that person.
+        my @contacts = map { $_->contact } $cust_main->cust_contact;
+        my $myname = $self->get('finger');
+        my ($contact) =
+          grep { $_->get('first') . ' ' . $_->get('last') eq $myname } @contacts;
+        # otherwise just pick the first one
+        $contact = $contacts[0];
+      }
       # if there is one
       $contact ||= FS::contact->new({
           'custnum'       => $cust_main->get('custnum'),
@@ -840,7 +847,19 @@ sub delete {
     }
   }
 
-  my $error = $self->SUPER::delete; # usergroup here
+  foreach my $svc_phone (
+    qsearch( 'svc_phone', { 'forward_svcnum' => $self->svcnum })
+  ) {
+    $svc_phone->set('forward_svcnum', '');
+    my $error = $svc_phone->replace;
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return $error;
+    }
+  }
+
+  my $error = $self->delete_password_history
+           || $self->SUPER::delete; # usergroup here
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
     return $error;