diff options
Diffstat (limited to 'bin/mapsecrets2access_user')
| -rwxr-xr-x | bin/mapsecrets2access_user | 87 | 
1 files changed, 87 insertions, 0 deletions
| diff --git a/bin/mapsecrets2access_user b/bin/mapsecrets2access_user new file mode 100755 index 000000000..d632360f5 --- /dev/null +++ b/bin/mapsecrets2access_user @@ -0,0 +1,87 @@ +#!/usr/bin/perl -w + +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; +use FS::access_user; +use FS::access_usergroup; +use FS::access_right; +use FS::access_groupagent; +use FS::agent; + +$FS::CurrentUser::upgrade_hack = 1; +my $user = shift or die &usage; +adminsuidsetup $user; + +my $supergroup = qsearchs('access_group', { 'groupname' => 'Superuser' } ); +unless ( $supergroup ) { + +  $supergroup = new FS::access_group { 'groupname' => 'Superuser' }; +  my $error = $supergroup->insert; +  die $error if $error; + +  foreach my $rightname ( FS::AccessRight->default_superuser_rights ) { +    my $access_right = new FS::access_right { +      'righttype'   => 'FS::access_group', +      'rightobjnum' => $supergroup->groupnum, +      'rightname'   => $rightname, +    }; +    my $ar_error = $access_right->insert; +    die $ar_error if $ar_error; +  } + +  foreach my $agent ( qsearch('agent', {} ) ) { +    my $access_groupagent = new FS::access_groupagent { +      'groupnum' => $supergroup->groupnum, +      'agentnum' => $agent->agentnum, +    }; +    my $aga_error = $access_groupagent->insert; +    die $aga_error if $aga_error; +  } + +} +my $supergroupnum = $supergroup->groupnum; + +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; + +  next if qsearchs('access_user', { 'username' => $username } ); + +  my $access_user = new FS::access_user { +    'username'  => $username, +    '_password' => 'notyet', +    'first'     => 'Legacy', +    'last'      => 'User', +  }; +  my $au_error = $access_user->insert; +  die $au_error if $au_error; + +  my $access_usergroup = new FS::access_usergroup {  +    'usernum'  => $access_user->usernum, +    'groupnum' => $supergroupnum, +  }; +  my $aug_error = $access_usergroup->insert; +  die $aug_error if $aug_error; + +} +close MAPSECRETS; + +# okay to clobber mapsecrets now i guess +cp $mapsecrets, "$mapsecrets.bak$$"; +open(MAPSECRETS, ">$mapsecrets") or die $!; +print MAPSECRETS '* secrets'. "\n"; +close MAPSECRETS or die $!; + +sub usage { +  die "Usage:\n  mapsecrets2access_user user\n";  +} + | 
