diff options
author | Mark Wells <mark@freeside.biz> | 2012-04-04 10:08:37 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2012-04-04 10:08:37 -0700 |
commit | 583e90e3de4d707996084dc82b794f26063b7fea (patch) | |
tree | e3c319516458ee6e88891e181ded261b6ac58a07 /FS | |
parent | c2ee6c5c4f274bbf86729cacd2fe011ea71f725d (diff) |
options to limit access to full customer list, #15928
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/AccessRight.pm | 3 | ||||
-rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
-rw-r--r-- | FS/FS/Schema.pm | 13 | ||||
-rw-r--r-- | FS/FS/Upgrade.pm | 1 | ||||
-rw-r--r-- | FS/FS/access_right.pm | 38 | ||||
-rw-r--r-- | FS/MANIFEST | 2 |
6 files changed, 64 insertions, 0 deletions
diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm index 1bfae03ad..b164948f2 100644 --- a/FS/FS/AccessRight.pm +++ b/FS/FS/AccessRight.pm @@ -253,6 +253,7 @@ tie my %rights, 'Tie::IxHash', ### 'Reporting/listing rights' => [ 'List customers', + 'List all customers', 'List zip codes', #NEW 'List invoices', 'List packages', @@ -266,6 +267,8 @@ tie my %rights, 'Tie::IxHash', { rightname=> 'List inventory', global=>1 }, { rightname=>'View email logs', global=>1 }, + 'Download report data', + #{ rightname => 'List customers of all agents', global=>1 }, ], diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 1b01aa64a..111bafa43 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1594,6 +1594,13 @@ and customer address. Include units.', }, { + 'key' => 'disable_maxselect', + 'section' => 'UI', + 'description' => 'Prevent changing the number of records per page.', + 'type' => 'checkbox', + }, + + { 'key' => 'session-start', 'section' => 'session', 'description' => 'If defined, the command which is executed on the Freeside machine when a session begins. The contents of the file are treated as a double-quoted perl string, with the following variables available: <code>$ip</code>, <code>$nasip</code> and <code>$nasfqdn</code>, which are the IP address of the starting session, and the IP address and fully-qualified domain name of the NAS this session is on.', diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 5147432a1..5b8525c04 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -3626,6 +3626,19 @@ sub tables_hashref { 'index' => [], }, + 'upgrade_journal' => { + 'columns' => [ + 'upgradenum', 'serial', '', '', '', '', + '_date', 'int', '', '', '', '', + 'upgrade', 'varchar', '', $char_d, '', '', + 'status', 'varchar', '', $char_d, '', '', + 'statustext', 'varchar', 'NULL', $char_d, '', '', + ], + 'primary_key' => 'upgradenum', + 'unique' => [ [ 'upgradenum' ] ], + 'index' => [ [ 'upgrade' ] ], + }, + %{ tables_hashref_torrus() }, # tables of ours for doing torrus virtual port combining diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index 8f66c66b5..aabc4e72f 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -7,6 +7,7 @@ use Tie::IxHash; use FS::UID qw( dbh driver_name ); use FS::Conf; use FS::Record qw(qsearchs qsearch str2time_sql); +use FS::upgrade_journal; use FS::svc_domain; $FS::svc_domain::whois_hack = 1; diff --git a/FS/FS/access_right.pm b/FS/FS/access_right.pm index ef8cc6cd8..d2a39aac8 100644 --- a/FS/FS/access_right.pm +++ b/FS/FS/access_right.pm @@ -180,6 +180,44 @@ sub _upgrade_data { # class method } + my @all_groups = qsearch('access_group', {}); + + ### ACL_list_all_customers + if ( !FS::upgrade_journal->is_done('ACL_list_all_customers') ) { + + # grant "List all customers" to all users who have "List customers" + for my $group (@all_groups) { + if ( $group->access_right('List customers') ) { + my $access_right = FS::access_right->new( { + 'righttype' => 'FS::access_group', + 'rightobjnum' => $group->groupnum, + 'rightname' => 'List all customers', + } ); + my $error = $access_right->insert; + die $error if $error; + } + } + + FS::upgrade_journal->set_done('ACL_list_all_customers'); + } + + ### ACL_download_report_data + if ( !FS::upgrade_journal->is_done('ACL_download_report_data') ) { + + # grant to everyone + for my $group (@all_groups) { + my $access_right = FS::access_right->new( { + 'righttype' => 'FS::access_group', + 'rightobjnum' => $group->groupnum, + 'rightname' => 'Download report data', + } ); + my $error = $access_right->insert; + die $error if $error; + } + + FS::upgrade_journal->set_done('ACL_download_report_data'); + } + ''; } diff --git a/FS/MANIFEST b/FS/MANIFEST index f0a4a9d6b..0c9cc5452 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -632,3 +632,5 @@ FS/h_svc_cert.pm t/h_svc_cert.t FS/contact_class.pm t/contact_class.t +FS/upgrade_journal.pm +t/upgrade_journal.t |