diff options
Diffstat (limited to 'FS/bin/freeside-addgroup')
| -rwxr-xr-x | FS/bin/freeside-addgroup | 50 | 
1 files changed, 50 insertions, 0 deletions
| diff --git a/FS/bin/freeside-addgroup b/FS/bin/freeside-addgroup new file mode 100755 index 000000000..25c23455a --- /dev/null +++ b/FS/bin/freeside-addgroup @@ -0,0 +1,50 @@ +#!/usr/bin/perl + +use strict; +use vars qw($opt_s); +use Getopt::Std; +use FS::UID qw(adminsuidsetup); +use FS::Record qw(qsearch); +use FS::CurrentUser; +use FS::AccessRight; +use FS::access_group; +use FS::access_right; +use FS::access_groupagent; + +getopts("s"); +my $user = shift or die &usage; #just for adminsuidsetup +my $group = shift or die &usage; + +$FS::CurrentUser::upgrade_hack = 1; +#adminsuidsetup $rootuser; +adminsuidsetup $user; + +my $access_group = new FS::access_group { 'groupname' => $group }; +my $error = $access_group->insert; +die $error if $error; + +if ( $opt_s ) { +  foreach my $rightname ( FS::AccessRight->default_superuser_rights ) { +    my $access_right = new FS::access_right { +      'righttype'   => 'FS::access_group', +      'rightobjnum' => $access_group->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' => $access_group->groupnum, +      'agentnum' => $agent->agentnum, +    }; +    my $aga_error = $access_groupagent->insert; +    die $aga_error if $aga_error; +  } +} + +sub usage { +  die "Usage:\n\n  freeside-addgroup [ -s ] username groupname" +} + | 
