fix 'Can't call method "setup" on an undefined value' error when using into rates...
[freeside.git] / FS / FS / Setup.pm
index d87668c..e1d890a 100644 (file)
@@ -5,6 +5,7 @@ use vars qw( @ISA @EXPORT_OK );
 use Exporter;
 #use Tie::DxHash;
 use Tie::IxHash;
+use Crypt::OpenSSL::RSA;
 use FS::UID qw( dbh driver_name );
 use FS::Record;
 
@@ -13,7 +14,7 @@ $FS::svc_domain::whois_hack = 1;
 $FS::svc_domain::whois_hack = 1;
 
 @ISA = qw( Exporter );
-@EXPORT_OK = qw( create_initial_data );
+@EXPORT_OK = qw( create_initial_data enable_encryption );
 
 =head1 NAME
 
@@ -53,13 +54,41 @@ sub create_initial_data {
   populate_access();
 
   populate_msgcat();
-  
+
+  populate_numbering();
+
   if ( $oldAutoCommit ) {
     dbh->commit or die dbh->errstr;
   }
 
 }
 
+sub enable_encryption {
+
+  eval "use FS::Conf";
+  die $@ if $@;
+
+  my $conf = new FS::Conf;
+
+  die "encryption key(s) already in place"
+    if $conf->exists('encryptionpublickey')
+    || $conf->exists('encryptionprivatekey');
+
+  my $length = 2048;
+  my $rsa = Crypt::OpenSSL::RSA->generate_key($length);
+
+  $conf->set('encryption', 1);
+  $conf->set('encryptionmodule',     'Crypt::OpenSSL::RSA');
+  $conf->set('encryptionpublickey',  $rsa->get_public_key_string );
+  $conf->set('encryptionprivatekey', $rsa->get_private_key_string );
+
+}
+
+sub populate_numbering {
+  eval "use FS::lata_Data;"; # this automatically populates the lata table, if unpopulated
+  eval "use FS::msa_Data;"; # this automatically populates the msa table, if unpopulated
+}
+
 sub populate_locales {
 
   use Locale::Country;
@@ -96,7 +125,7 @@ sub populate_addl_locales {
 
 sub _add_country {
 
-  use Locale::SubCountry;
+  use Locale::SubCountry 1.42;
 
   my( $country ) = shift;
 
@@ -146,14 +175,14 @@ sub populate_initial_data {
 
   foreach my $table ( keys %$data ) {
 
-    warn "popuilating $table\n";
+    #warn "popuilating $table\n";
 
     my $class = "FS::$table";
     eval "use $class;";
     die $@ if $@;
 
     $class->_populate_initial_data(%opt)
-      if $class->can('_populate_inital_data');
+      if $class->can('_populate_initial_data');
 
     my @records = @{ $data->{$table} };
 
@@ -165,9 +194,9 @@ sub populate_initial_data {
       die "error inserting record into $table: $error\n"
         if $error;
 
-      my $pkey = $object->primary_key;
-      my $pkeyvalue = $object->$pkey();
-      warn "  inserted $pkeyvalue\n";
+      #my $pkey = $object->primary_key;
+      #my $pkeyvalue = $object->$pkey();
+      #warn "  inserted $pkeyvalue\n";
 
     }
 
@@ -181,6 +210,16 @@ sub initial_data {
   #tie my %hash, 'Tie::DxHash', 
   tie my %hash, 'Tie::IxHash', 
 
+    #bootstrap user
+    'access_user' => [
+      { 'username'  => 'fs_bootstrap',
+        '_password' => 'changeme', #will trigger warning if you try to enable
+        'last'      => 'User',
+        'first'     => 'Bootstrap',
+        'disabled'  => 'Y',
+      },
+    ],
+
     #superuser group
     'access_group' => [
       { 'groupname' => 'Superuser' },
@@ -348,11 +387,12 @@ sub initial_data {
 
     #not yet....
 
-  #)
-
     #usage classes
     'usage_class' => [],
 
+    #phone types
+    'phone_type' => [],
+
   ;
 
   \%hash;
@@ -364,7 +404,7 @@ sub populate_access {
   use FS::AccessRight;
   use FS::access_right;
 
-  foreach my $rightname ( FS::AccessRight->rights ) {
+  foreach my $rightname ( FS::AccessRight->default_superuser_rights ) {
     my $access_right = new FS::access_right {
       'righttype'   => 'FS::access_group',
       'rightobjnum' => 1, #$supergroup->groupnum,
@@ -395,7 +435,7 @@ sub populate_msgcat {
     die $error if $error;
   }
 
-  my %messages = msgcat_messages();
+  my %messages = FS::msgcat::_legacy_messages();
 
   foreach my $msgcode ( keys %messages ) {
     foreach my $locale ( keys %{$messages{$msgcode}} ) {
@@ -411,122 +451,6 @@ sub populate_msgcat {
 
 }
 
-sub msgcat_messages {
-
-  #  'msgcode' => {
-  #    'en_US' => 'Message',
-  #  },
-
-  (
-
-    'passwords_dont_match' => {
-      'en_US' => "Passwords don't match",
-    },
-
-    'invalid_card' => {
-      'en_US' => 'Invalid credit card number',
-    },
-
-    'unknown_card_type' => {
-      'en_US' => 'Unknown card type',
-    },
-
-    'not_a' => {
-      'en_US' => 'Not a ',
-    },
-
-    'empty_password' => {
-      'en_US' => 'Empty password',
-    },
-
-    'no_access_number_selected' => {
-      'en_US' => 'No access number selected',
-    },
-
-    'illegal_text' => {
-      'en_US' => 'Illegal (text)',
-      #'en_US' => 'Only letters, numbers, spaces, and the following punctuation symbols are permitted: ! @ # $ % & ( ) - + ; : \' " , . ? / in field',
-    },
-
-    'illegal_or_empty_text' => {
-      'en_US' => 'Illegal or empty (text)',
-      #'en_US' => 'Only letters, numbers, spaces, and the following punctuation symbols are permitted: ! @ # $ % & ( ) - + ; : \' " , . ? / in required field',
-    },
-
-    'illegal_username' => {
-      'en_US' => 'Illegal username',
-    },
-
-    'illegal_password' => {
-      'en_US' => 'Illegal password (',
-    },
-
-    'illegal_password_characters' => {
-      'en_US' => ' characters)',
-    },
-
-    'username_in_use' => {
-      'en_US' => 'Username in use',
-    },
-
-    'phonenum_in_use' => {
-      'en_US' => 'Phone number in use',
-    },
-
-    'illegal_email_invoice_address' => {
-      'en_US' => 'Illegal email invoice address',
-    },
-
-    'illegal_name' => {
-      'en_US' => 'Illegal (name)',
-      #'en_US' => 'Only letters, numbers, spaces and the following punctuation symbols are permitted: , . - \' in field',
-    },
-
-    'illegal_phone' => {
-      'en_US' => 'Illegal (phone)',
-      #'en_US' => '',
-    },
-
-    'illegal_zip' => {
-      'en_US' => 'Illegal (zip)',
-      #'en_US' => '',
-    },
-
-    'expired_card' => {
-      'en_US' => 'Expired card',
-    },
-
-    'daytime' => {
-      'en_US' => 'Day Phone',
-    },
-
-    'night' => {
-      'en_US' => 'Night Phone',
-    },
-
-    'svc_external-id' => {
-      'en_US' => 'External ID',
-    },
-
-    'svc_external-title' => {
-      'en_US' => 'Title',
-    },
-
-    'stateid' => {
-      'en_US' => 'Driver\'s License',
-    },
-
-    'stateid_state' => {
-      'en_US' => 'Driver\'s License State',
-    },
-
-    'invalid_domain' => {
-      'en_US' => 'Invalid domain',
-    },
-
-  );
-}
-
 =back
 
 =head1 BUGS