[Koha-patches] [PATCH] bug_8083: parameters subpermissions: manage_circ_rules and parameters_remaining_permissions

Srdjan srdjan at catalyst.net.nz
Tue May 15 07:05:20 CEST 2012


---
 admin/admin-home.pl                                |    2 +-
 admin/auth_subfields_structure.pl                  |    2 +-
 admin/auth_tag_structure.pl                        |    2 +-
 admin/authorised_values.pl                         |    2 +-
 admin/authtypes.pl                                 |    2 +-
 admin/biblio_framework.pl                          |    2 +-
 admin/branches.pl                                  |    2 +-
 admin/categorie.pl                                 |    2 +-
 admin/checkmarc.pl                                 |    2 +-
 admin/cities.pl                                    |    2 +-
 admin/classsources.pl                              |    2 +-
 admin/clone-rules.pl                               |    2 +-
 admin/currency.pl                                  |    2 +-
 admin/env_tz_test.pl                               |    2 +-
 admin/fieldmapping.pl                              |    2 +-
 admin/item_circulation_alerts.pl                   |    2 +-
 admin/itemtypes.pl                                 |    2 +-
 admin/koha2marclinks.pl                            |    2 +-
 admin/marc_subfields_structure.pl                  |    2 +-
 admin/marctagstructure.pl                          |    2 +-
 admin/matching-rules.pl                            |    2 +-
 admin/oai_set_mappings.pl                          |    2 +-
 admin/oai_sets.pl                                  |    2 +-
 admin/patron-attr-types.pl                         |    2 +-
 admin/preferences.pl                               |    2 +-
 admin/printers.pl                                  |    2 +-
 admin/roadtype.pl                                  |    2 +-
 admin/smart-rules.pl                               |    2 +-
 admin/stopwords.pl                                 |    2 +-
 admin/systempreferences.pl                         |    2 +-
 admin/z3950servers.pl                              |    2 +-
 .../data/mysql/en/mandatory/userpermissions.sql    |    2 ++
 installer/data/mysql/updatedatabase.pl             |   18 ++++++++++++++++++
 .../prog/en/modules/admin/admin-home.tt            |    2 ++
 34 files changed, 53 insertions(+), 31 deletions(-)

diff --git a/admin/admin-home.pl b/admin/admin-home.pl
index ad7a897..2d60b0a 100755
--- a/admin/admin-home.pl
+++ b/admin/admin-home.pl
@@ -30,7 +30,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $query,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => '*'},
 			     debug => 1,
 			     });
 
diff --git a/admin/auth_subfields_structure.pl b/admin/auth_subfields_structure.pl
index 432d496..537f0ea 100755
--- a/admin/auth_subfields_structure.pl
+++ b/admin/auth_subfields_structure.pl
@@ -57,7 +57,7 @@ my ($template, $borrowernumber, $cookie) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
diff --git a/admin/auth_tag_structure.pl b/admin/auth_tag_structure.pl
index bd3dc93..587b27f 100755
--- a/admin/auth_tag_structure.pl
+++ b/admin/auth_tag_structure.pl
@@ -50,7 +50,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/authorised_values.pl b/admin/authorised_values.pl
index 1545f0e..949e488 100755
--- a/admin/authorised_values.pl
+++ b/admin/authorised_values.pl
@@ -55,7 +55,7 @@ our $dbh = C4::Context->dbh;
 our ($template, $borrowernumber, $cookie)= get_template_and_user({
     template_name => "admin/authorised_values.tmpl",
     authnotrequired => 0,
-    flagsrequired => {parameters => 1},
+    flagsrequired => {parameters => 'parameters_remaining_permissions'},
     query => $input,
     type => "intranet",
     debug => 1,
diff --git a/admin/authtypes.pl b/admin/authtypes.pl
index 250a89c..9869372 100755
--- a/admin/authtypes.pl
+++ b/admin/authtypes.pl
@@ -45,7 +45,7 @@ my ($template, $borrowernumber, $cookie)
                 query => $input,
                 type => "intranet",
                 authnotrequired => 0,
-                flagsrequired => {parameters => 1},
+                flagsrequired => {parameters => 'parameters_remaining_permissions'},
                 debug => 1,
                 });
 
diff --git a/admin/biblio_framework.pl b/admin/biblio_framework.pl
index f2c147e..e2130cf 100755
--- a/admin/biblio_framework.pl
+++ b/admin/biblio_framework.pl
@@ -47,7 +47,7 @@ my ($template, $borrowernumber, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/branches.pl b/admin/branches.pl
index c12762d..d172ea6 100755
--- a/admin/branches.pl
+++ b/admin/branches.pl
@@ -63,7 +63,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1},
+        flagsrequired   => { parameters => 'parameters_remaining_permissions'},
         debug           => 1,
     }
 );
diff --git a/admin/categorie.pl b/admin/categorie.pl
index 521346b..51e736a 100755
--- a/admin/categorie.pl
+++ b/admin/categorie.pl
@@ -73,7 +73,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/checkmarc.pl b/admin/checkmarc.pl
index e08796f..8523b02 100755
--- a/admin/checkmarc.pl
+++ b/admin/checkmarc.pl
@@ -34,7 +34,7 @@ my ($template, $borrowernumber, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/cities.pl b/admin/cities.pl
index 0303a48..378ceda 100755
--- a/admin/cities.pl
+++ b/admin/cities.pl
@@ -41,7 +41,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/classsources.pl b/admin/classsources.pl
index 45183cd..e7f6c9a 100755
--- a/admin/classsources.pl
+++ b/admin/classsources.pl
@@ -40,7 +40,7 @@ my ($template, $loggedinuser, $cookie)
                  query => $input,
                  type => "intranet",
                  authnotrequired => 0,
-                 flagsrequired => {parameters => 1},
+                 flagsrequired => {parameters => 'parameters_remaining_permissions'},
                  debug => 1,
                  });
 
diff --git a/admin/clone-rules.pl b/admin/clone-rules.pl
index dcf4abe..c9e4665 100755
--- a/admin/clone-rules.pl
+++ b/admin/clone-rules.pl
@@ -43,7 +43,7 @@ my ($template, $loggedinuser, $cookie)
                             query => $input,
                             type => "intranet",
                             authnotrequired => 0,
-                            flagsrequired => {parameters => 1},
+                            flagsrequired => {parameters => 'parameters_remaining_permissions'},
                             debug => 1,
                             });
 
diff --git a/admin/currency.pl b/admin/currency.pl
index e24f6b6..aa878fd 100755
--- a/admin/currency.pl
+++ b/admin/currency.pl
@@ -57,7 +57,7 @@ our ($template, $loggedinuser, $cookie) = get_template_and_user({
     template_name => 'admin/currency.tmpl',
     query => $input,
     type => 'intranet',
-    flagsrequired => {parameters => 1},
+    flagsrequired => {parameters => 'parameters_remaining_permissions'},
     authnotrequired => 0,
 });
 
diff --git a/admin/env_tz_test.pl b/admin/env_tz_test.pl
index 5bd5cd7..876e546 100755
--- a/admin/env_tz_test.pl
+++ b/admin/env_tz_test.pl
@@ -14,7 +14,7 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({
 			   query => $q,
 			 	type => "intranet",
 	 authnotrequired => 0,
- 	   flagsrequired => {parameters => 1},
+ 	   flagsrequired => {parameters => 'parameters_remaining_permissions'},
 		       debug => 1,
 });
 
diff --git a/admin/fieldmapping.pl b/admin/fieldmapping.pl
index f7eca3c..2856e70 100755
--- a/admin/fieldmapping.pl
+++ b/admin/fieldmapping.pl
@@ -39,7 +39,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $query,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/item_circulation_alerts.pl b/admin/item_circulation_alerts.pl
index ee77ae8..2bfb496 100755
--- a/admin/item_circulation_alerts.pl
+++ b/admin/item_circulation_alerts.pl
@@ -65,7 +65,7 @@ sub show {
             query           => $input,
             type            => "intranet",
             authnotrequired => 0,
-            flagsrequired   => { parameters => 1 },
+            flagsrequired   => { parameters => 'parameters_remaining_permissions' },
             debug           => defined($input->param('debug')),
         }
     );
diff --git a/admin/itemtypes.pl b/admin/itemtypes.pl
index 3219da3..841672d 100755
--- a/admin/itemtypes.pl
+++ b/admin/itemtypes.pl
@@ -77,7 +77,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
diff --git a/admin/koha2marclinks.pl b/admin/koha2marclinks.pl
index a89681d..fc320ad 100755
--- a/admin/koha2marclinks.pl
+++ b/admin/koha2marclinks.pl
@@ -39,7 +39,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user (
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl
index bc6636a..365a861 100755
--- a/admin/marc_subfields_structure.pl
+++ b/admin/marc_subfields_structure.pl
@@ -72,7 +72,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
diff --git a/admin/marctagstructure.pl b/admin/marctagstructure.pl
index a86d788..2d7d913 100755
--- a/admin/marctagstructure.pl
+++ b/admin/marctagstructure.pl
@@ -52,7 +52,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/matching-rules.pl b/admin/matching-rules.pl
index b167026..2fa2ac6 100755
--- a/admin/matching-rules.pl
+++ b/admin/matching-rules.pl
@@ -39,7 +39,7 @@ my ($template, $loggedinuser, $cookie)
                  query => $input,
                  type => "intranet",
                  authnotrequired => 0,
-                 flagsrequired => {parameters => 1},
+                 flagsrequired => {parameters => 'parameters_remaining_permissions'},
                  debug => 1,
                  });
 
diff --git a/admin/oai_set_mappings.pl b/admin/oai_set_mappings.pl
index 4d570f9..1a9762c 100755
--- a/admin/oai_set_mappings.pl
+++ b/admin/oai_set_mappings.pl
@@ -45,7 +45,7 @@ my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
     query           => $input,
     type            => 'intranet',
     authnotrequired => 0,
-    flagsrequired   => { 'parameters' => '*' },
+    flagsrequired   => { 'parameters' => 'parameters_remaining_permissions' },
     debug           => 1,
 } );
 
diff --git a/admin/oai_sets.pl b/admin/oai_sets.pl
index a826107..c923e87 100755
--- a/admin/oai_sets.pl
+++ b/admin/oai_sets.pl
@@ -41,7 +41,7 @@ my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
     query           => $input,
     type            => 'intranet',
     authnotrequired => 0,
-    flagsrequired   => { 'parameters' => '*' },
+    flagsrequired   => { 'parameters' => 'parameters_remaining_permissions' },
     debug           => 1,
 } );
 
diff --git a/admin/patron-attr-types.pl b/admin/patron-attr-types.pl
index 638456e..c0ad1f7 100755
--- a/admin/patron-attr-types.pl
+++ b/admin/patron-attr-types.pl
@@ -42,7 +42,7 @@ our ($template, $loggedinuser, $cookie)
                  query => $input,
                  type => "intranet",
                  authnotrequired => 0,
-                 flagsrequired => {parameters => 1},
+                 flagsrequired => {parameters => 'parameters_remaining_permissions'},
                  debug => 1,
                  });
 
diff --git a/admin/preferences.pl b/admin/preferences.pl
index 0dcec19..b1ad005 100755
--- a/admin/preferences.pl
+++ b/admin/preferences.pl
@@ -261,7 +261,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
diff --git a/admin/printers.pl b/admin/printers.pl
index c32b4e6..79c9949 100755
--- a/admin/printers.pl
+++ b/admin/printers.pl
@@ -72,7 +72,7 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({
 			   query => $input,
 			 	type => "intranet",
 	 authnotrequired => 0,
- 	   flagsrequired => {parameters => 1},
+ 	   flagsrequired => {parameters => 'parameters_remaining_permissions'},
 		       debug => 1,
 });
 
diff --git a/admin/roadtype.pl b/admin/roadtype.pl
index a756594..a75c0dc 100755
--- a/admin/roadtype.pl
+++ b/admin/roadtype.pl
@@ -43,7 +43,7 @@ my ($template, $loggedinuser, $cookie)
 			     query => $input,
 			     type => "intranet",
 			     authnotrequired => 0,
-			     flagsrequired => {parameters => 1},
+			     flagsrequired => {parameters => 'parameters_remaining_permissions'},
 			     debug => 1,
 			     });
 
diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl
index 8e5a2d5..cb35214 100755
--- a/admin/smart-rules.pl
+++ b/admin/smart-rules.pl
@@ -38,7 +38,7 @@ my ($template, $loggedinuser, $cookie)
                             query => $input,
                             type => "intranet",
                             authnotrequired => 0,
-                            flagsrequired => {parameters => 1},
+                            flagsrequired => {parameters => 'manage_circ_rules'},
                             debug => 1,
                             });
 
diff --git a/admin/stopwords.pl b/admin/stopwords.pl
index 7a24af7..a64745f 100755
--- a/admin/stopwords.pl
+++ b/admin/stopwords.pl
@@ -48,7 +48,7 @@ my ($template, $loggedinuser, $cookie)
     = get_template_and_user({template_name => "admin/stopwords.tmpl",
     query => $input,
     type => "intranet",
-    flagsrequired => {parameters => 1},
+    flagsrequired => {parameters => 'parameters_remaining_permissions'},
     authnotrequired => 0,
     debug => 1,
     });
diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl
index 5e3848d..078f5e8 100755
--- a/admin/systempreferences.pl
+++ b/admin/systempreferences.pl
@@ -592,7 +592,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
diff --git a/admin/z3950servers.pl b/admin/z3950servers.pl
index 3bc0ef2..8d5ebdc 100755
--- a/admin/z3950servers.pl
+++ b/admin/z3950servers.pl
@@ -75,7 +75,7 @@ my ($template, $loggedinuser, $cookie)
 				query => $input,
 				type => "intranet",
 				authnotrequired => 0,
-				flagsrequired => {parameters => 1},
+				flagsrequired => {parameters => 'parameters_remaining_permissions'},
 				debug => 1,
 				});
 
diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql b/installer/data/mysql/en/mandatory/userpermissions.sql
index 873089a..4f05b15 100644
--- a/installer/data/mysql/en/mandatory/userpermissions.sql
+++ b/installer/data/mysql/en/mandatory/userpermissions.sql
@@ -1,6 +1,8 @@
 INSERT INTO permissions (module_bit, code, description) VALUES
    ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'),
    ( 1, 'override_renewals', 'Override blocked renewals'),
+   ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'),
+   ( 3, 'manage_circ_rules', 'manage circulation rules'),
    ( 6, 'place_holds', 'Place holds for patrons'),
    ( 6, 'modify_holds_priority', 'Modify holds priority'),
    ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'),
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 035e1e6..a251847 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -5239,6 +5239,24 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
     SetVersion($DBversion);
 }
 
+
+
+
+$DBversion = "3.09.00.XXX";
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+    $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES
+        ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'),
+        ( 3, 'manage_circ_rules', 'manage circulation rules')");
+    $dbh->do("INSERT INTO user_permissions (borrowernumber, module_bit, code)
+        SELECT borrowernumber, 3, 'parameters_remaining_permissions'
+        FROM borrowers WHERE flags & (1 << 3)");
+    $dbh->do("INSERT INTO user_permissions (borrowernumber, module_bit, code)
+        SELECT borrowernumber, 3, 'manage_circ_rules'
+        FROM borrowers WHERE flags & (1 << 3)");
+    print "Upgrade to $DBversion done (Added parameters subpermissions)\n";
+    SetVersion($DBversion);
+}
+
 =head1 FUNCTIONS
 
 =head2 TableExists($table)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt
index ef46ede..1d08028 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt
@@ -49,8 +49,10 @@
 	<dd>Define road types (street, avenue, way, etc.). Road types display as authorized values when adding/editing patrons and can be used in geographic statistics.</dd>
 	<dt><a href="/cgi-bin/koha/admin/patron-attr-types.pl">Patron attribute types</a></dt>
 	<dd>Define extended attributes (identifiers and statistical categories) for patron records</dd>
+[% IF CAN_user_parameters_manage_circ_rules %]
 	<dt><a href="/cgi-bin/koha/admin/smart-rules.pl">Circulation and fines rules</a></dt>
 	<dd>Define circulation and fines rules for combinations of libraries, patron categories, and item types</dd>
+[% END %]
     <dt><a href="/cgi-bin/koha/admin/branch_transfer_limits.pl">Library transfer limits</a></dt>
 	<dd>Limit the ability to transfer items between libraries based on the library sending, the library receiving, and the item type involved. These rules only go into effect if the preference UseBranchTransferLimits is set to ON.</dd>
     <dt><a href="/cgi-bin/koha/admin/item_circulation_alerts.pl">Item circulation alerts</a></dt>
-- 
1.7.9.5



More information about the Koha-patches mailing list