5 use FS::UID qw(adminsuidsetup);
8 use FS::Record qw(qsearchs qsearch);
11 use FS::access_usergroup;
13 use FS::access_groupagent;
16 $FS::CurrentUser::upgrade_hack = 1;
19 my $supergroup = qsearchs('access_group', { 'groupname' => 'Superuser' } );
20 unless ( $supergroup ) {
22 $supergroup = new FS::access_group { 'groupname' => 'Superuser' };
23 my $error = $supergroup->insert;
26 foreach my $rightname ( FS::AccessRight->rights ) {
27 my $access_right = new FS::access_right {
28 'righttype' => 'FS::access_group',
29 'rightobjnum' => $supergroup->groupnum,
30 'rightname' => $rightname,
32 my $ar_error = $access_right->insert;
33 die $ar_error if $ar_error;
36 foreach my $agent ( qsearch('agent', {} ) ) {
37 my $access_groupagent = new FS::access_groupagent {
38 'groupnum' => $supergroup->groupnum,
39 'agentnum' => $agent->agentnum,
41 my $aga_error = $access_groupagent->insert;
42 die $aga_error if $aga_error;
46 my $supergroupnum = $supergroup->groupnum;
48 my $mapsecrets = '/usr/local/etc/freeside/mapsecrets';
49 open(MAPSECRETS, "<$mapsecrets") or die $!;
50 while (<MAPSECRETS>) {
51 /([\w]+)\s+secrets\s*$/ or die "unparsable line in mapsecrets: $_";
54 next if qsearchs('access_user', { 'username' => $username } );
56 my $access_user = new FS::access_user {
57 'username' => $username,
58 '_password' => 'notyet',
62 my $au_error = $access_user->insert;
63 die $au_error if $au_error;
65 my $access_usergroup = new FS::access_usergroup {
66 'usernum' => $access_user->usernum,
67 'groupnum' => $supergroupnum,
69 my $aug_error = $access_usergroup->insert;
70 die $aug_error if $aug_error;
75 # okay to clobber mapsecrets now i guess
76 cp $mapsecrets, "$mapsecrets.bak$$";
77 open(MAPSECRETS, ">$mapsecrets") or die $!;
78 print MAPSECRETS '* secrets'. "\n";
79 close MAPSECRETS or die $!;