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