adding export to read mailbox status information, RT#15987
[freeside.git] / bin / mapsecrets2access_user
index 934cd76..d632360 100755 (executable)
@@ -3,6 +3,7 @@
 use strict;
 use File::Copy "cp";
 use FS::UID qw(adminsuidsetup);
+use FS::CurrentUser;
 use FS::AccessRight;
 use FS::Record qw(qsearchs qsearch);
 use FS::access_group;
@@ -12,7 +13,9 @@ use FS::access_right;
 use FS::access_groupagent;
 use FS::agent;
 
-adminsuidsetup shift;
+$FS::CurrentUser::upgrade_hack = 1;
+my $user = shift or die &usage;
+adminsuidsetup $user;
 
 my $supergroup = qsearchs('access_group', { 'groupname' => 'Superuser' } );
 unless ( $supergroup ) {
@@ -21,7 +24,7 @@ unless ( $supergroup ) {
   my $error = $supergroup->insert;
   die $error if $error;
 
-  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' => $supergroup->groupnum,
@@ -43,8 +46,10 @@ unless ( $supergroup ) {
 }
 my $supergroupnum = $supergroup->groupnum;
 
-my $mapsecrets = '/usr/local/etc/freeside/mapsecrets';
-open(MAPSECRETS, "<$mapsecrets");
+my $conf = new FS::Conf;
+my $dir = $conf->base_dir;
+my $mapsecrets = "$dir/mapsecrets";
+open(MAPSECRETS, "<$mapsecrets") or die "Can't open $mapsecrets: $!";
 while (<MAPSECRETS>) {
   /([\w]+)\s+secrets\s*$/ or die "unparsable line in mapsecrets: $_";
   my $username = $1;
@@ -68,9 +73,15 @@ while (<MAPSECRETS>) {
   die $aug_error if $aug_error;
 
 }
+close MAPSECRETS;
 
 # okay to clobber mapsecrets now i guess
 cp $mapsecrets, "$mapsecrets.bak$$";
-open(MAPSECRETS, ">$mapsecrets");
+open(MAPSECRETS, ">$mapsecrets") or die $!;
 print MAPSECRETS '* secrets'. "\n";
-close MAPSECRETS;
+close MAPSECRETS or die $!;
+
+sub usage {
+  die "Usage:\n  mapsecrets2access_user user\n"; 
+}
+