ACL bootstrapping
[freeside.git] / bin / mapsecrets2access_user
1 #!/usr/bin/perl -w
2
3 use strict;
4 use File::Copy "cp";
5 use FS::UID qw(adminsuidsetup);
6 use FS::CurrentUser;
7 use FS::AccessRight;
8 use FS::Record qw(qsearchs qsearch);
9 use FS::access_group;
10 use FS::access_user;
11 use FS::access_usergroup;
12 use FS::access_right;
13 use FS::access_groupagent;
14 use FS::agent;
15
16 $FS::CurrentUser::upgrade_hack = 1;
17 adminsuidsetup shift;
18
19 my $supergroup = qsearchs('access_group', { 'groupname' => 'Superuser' } );
20 unless ( $supergroup ) {
21
22   $supergroup = new FS::access_group { 'groupname' => 'Superuser' };
23   my $error = $supergroup->insert;
24   die $error if $error;
25
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,
31     };
32     my $ar_error = $access_right->insert;
33     die $ar_error if $ar_error;
34   }
35
36   foreach my $agent ( qsearch('agent', {} ) ) {
37     my $access_groupagent = new FS::access_groupagent {
38       'groupnum' => $supergroup->groupnum,
39       'agentnum' => $agent->agentnum,
40     };
41     my $aga_error = $access_groupagent->insert;
42     die $aga_error if $aga_error;
43   }
44
45 }
46 my $supergroupnum = $supergroup->groupnum;
47
48 my $mapsecrets = '/usr/local/etc/freeside/mapsecrets';
49 open(MAPSECRETS, "<$mapsecrets");
50 while (<MAPSECRETS>) {
51   /([\w]+)\s+secrets\s*$/ or die "unparsable line in mapsecrets: $_";
52   my $username = $1;
53
54   next if qsearchs('access_user', { 'username' => $username } );
55
56   my $access_user = new FS::access_user {
57     'username'  => $username,
58     '_password' => 'notyet',
59     'first'     => 'Legacy',
60     'last'      => 'User',
61   };
62   my $au_error = $access_user->insert;
63   die $au_error if $au_error;
64
65   my $access_usergroup = new FS::access_usergroup { 
66     'usernum'  => $access_user->usernum,
67     'groupnum' => $supergroupnum,
68   };
69   my $aug_error = $access_usergroup->insert;
70   die $aug_error if $aug_error;
71
72 }
73
74 # okay to clobber mapsecrets now i guess
75 cp $mapsecrets, "$mapsecrets.bak$$";
76 open(MAPSECRETS, ">$mapsecrets");
77 print MAPSECRETS '* secrets'. "\n";
78 close MAPSECRETS;