Bug 20415: Remove UseKohaPlugins system preference
authorFridolin Somers <fridolin.somers@biblibre.com>
Thu, 19 Mar 2020 14:22:30 +0000 (17:22 +0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 26 Mar 2020 11:42:02 +0000 (11:42 +0000)
Owen Leonard 2018-03-16 10:47:47 UTC :
<<
I don't think the system preference adds any security. There are already multiple permissions required for working with plugins:

- Configure plugins
- Manage plugins ( install / uninstall )
- Use report plugins
- Use tool plugins

And even with those permissions your server must be configured to allow the use of plugins.
>>

Test plan :
1) Install kitchen sink plugin https://github.com/bywatersolutions/koha-plugin-kitchen-sink
2) Run misc/devel/install_plugins.pl
3) Set config enable_plugins=1
4) Check all parts of the plugin are working
5) Set config enable_plugins=0
6) Check all parts of the plugin are disabled

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

28 files changed:
C4/Auth.pm
C4/Biblio.pm
C4/UsageStats.pm
Koha/Item.pm
Koha/Patron.pm
Koha/REST/Plugin/PluginRoutes.pm
Koha/REST/V1/Static.pm
Koha/Template/Plugin/KohaPlugins.pm
admin/admin-home.pl
admin/edi_accounts.pl
catalogue/detail.pl
installer/data/mysql/atomicupdate/bug_20415.sql [new file with mode: 0644]
installer/data/mysql/sysprefs.sql
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref
misc/devel/install_plugins.pl
opac/opac-account.pl
plugins/plugins-enable.pl
plugins/plugins-home.pl
plugins/plugins-uninstall.pl
plugins/plugins-upload.pl
plugins/run.pl
t/db_dependent/ImportBatch.t
t/db_dependent/Koha/Plugins/Biblio_and_Items_plugin_hooks.t
t/db_dependent/Koha/Plugins/Patron.t
t/db_dependent/Koha/REST/Plugin/PluginRoutes.t
t/db_dependent/Koha/Template/Plugin/KohaPlugins.t
t/db_dependent/UsageStats.t
tools/stage-marc-import.pl

index f3089f2..dc83ac4 100644 (file)
@@ -506,7 +506,6 @@ sub get_template_and_user {
             OPACLocalCoverImages                                                       => C4::Context->preference('OPACLocalCoverImages'),
             AllowMultipleCovers                                                        => C4::Context->preference('AllowMultipleCovers'),
             EnableBorrowerFiles                                                        => C4::Context->preference('EnableBorrowerFiles'),
-            UseKohaPlugins                                                             => C4::Context->preference('UseKohaPlugins'),
             UseCourseReserves                                                          => C4::Context->preference("UseCourseReserves"),
             useDischarge                                                               => C4::Context->preference('useDischarge'),
             pending_checkout_notes                                                     => scalar Koha::Checkouts->search({ noteseen => 0 }),
index 1f00ac8..d8a96a6 100644 (file)
@@ -3448,7 +3448,7 @@ sub _after_biblio_action_hooks {
     my $biblio_id = $args->{biblio_id};
     my $action    = $args->{action};
 
-    if ( C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins") ) {
+    if ( C4::Context->config("enable_plugins") ) {
 
         my @plugins = Koha::Plugins->new->GetPlugins({
             method => 'after_biblio_action',
index 5cb1361..5585436 100644 (file)
@@ -213,7 +213,6 @@ sub BuildReport {
         NovelistSelectEnabled
         OpenLibraryCovers
         OpenLibrarySearch
-        UseKohaPlugins
         SyndeticsEnabled
         TagsEnabled
         CalendarFirstDayOfWeek
index 567a294..af86f45 100644 (file)
@@ -807,7 +807,7 @@ sub _after_item_action_hooks {
 
     my $action = $params->{action};
 
-    if ( C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins") ) {
+    if ( C4::Context->config("enable_plugins") ) {
 
         my @plugins = Koha::Plugins->new->GetPlugins({
             method => 'after_item_action',
index b879286..9948f8c 100644 (file)
@@ -230,10 +230,7 @@ sub store {
                 $self->privacy($default_privacy);
 
                 # Call any check_password plugins if password is passed
-                if (   C4::Context->preference('UseKohaPlugins')
-                    && C4::Context->config("enable_plugins")
-                    && $self->password )
-                {
+                if ( C4::Context->config("enable_plugins") && $self->password ) {
                     my @plugins = Koha::Plugins->new()->GetPlugins({
                         method => 'check_password',
                     });
@@ -749,7 +746,7 @@ sub set_password {
         }
     }
 
-    if ( C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins") ) {
+    if ( C4::Context->config("enable_plugins") ) {
         # Call any check_password plugins
         my @plugins = Koha::Plugins->new()->GetPlugins({
             method => 'check_password',
index 71cfebd..5247373 100644 (file)
@@ -45,8 +45,7 @@ sub register {
 
     my @plugins;
 
-    if (   C4::Context->preference('UseKohaPlugins')
-        && C4::Context->config("enable_plugins") )
+    if ( C4::Context->config("enable_plugins") )
     {
         # plugin needs to define a namespace
         @plugins = Koha::Plugins->new()->GetPlugins(
index 60fee5c..930d88f 100644 (file)
@@ -35,8 +35,7 @@ sub get {
     my $self = shift;
     my $c = $self->openapi->valid_input or return;
 
-    if (   C4::Context->preference('UseKohaPlugins')
-        && C4::Context->config("enable_plugins") )
+    if ( C4::Context->config("enable_plugins") )
     {
         my $path = $c->req->url->path->leading_slash(1);
 
index b1ebe7f..798e648 100644 (file)
@@ -47,8 +47,7 @@ to output to the head section of opac pages.
 =cut
 
 sub get_plugins_opac_head {
-    return q{}
-      unless C4::Context->preference('UseKohaPlugins');
+    return q{} unless C4::Context->config("enable_plugins");
 
     my $p = Koha::Plugins->new();
 
@@ -75,8 +74,7 @@ to output to the javascript section of at the bottom of opac pages.
 =cut
 
 sub get_plugins_opac_js {
-    return q{}
-      unless C4::Context->preference('UseKohaPlugins');
+    return q{} unless C4::Context->config("enable_plugins");
 
     my $p = Koha::Plugins->new();
 
@@ -103,8 +101,7 @@ to output to the head section of intranet pages.
 =cut
 
 sub get_plugins_intranet_head {
-    return q{}
-      unless C4::Context->preference('UseKohaPlugins');
+    return q{} unless C4::Context->config("enable_plugins");
 
     my $p = Koha::Plugins->new();
 
@@ -131,8 +128,7 @@ to output to the javascript section of at the bottom of intranet pages.
 =cut
 
 sub get_plugins_intranet_js {
-    return q{}
-      unless C4::Context->preference('UseKohaPlugins');
+    return q{} unless C4::Context->config("enable_plugins");
 
     my $p = Koha::Plugins->new();
 
index f6a7b23..f6d609f 100755 (executable)
@@ -24,7 +24,7 @@ use Koha::Plugins;
 
 my $query = new CGI;
 
-my $plugins_enabled = C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins");
+my $plugins_enabled = C4::Context->config("enable_plugins");
 my $mana_url        = C4::Context->config('mana_config');
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
index ea3ce65..c4aba0f 100755 (executable)
@@ -52,10 +52,7 @@ if ( $op eq 'acct_form' ) {
     );
     $template->param( vendors => \@vendors );
 
-    my $plugins_enabled = C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins");
-    $template->param( plugins_enabled => $plugins_enabled );
-
-    if ( $plugins_enabled ) {
+    if ( C4::Context->config("enable_plugins") ) {
         my @plugins = Koha::Plugins->new()->GetPlugins({
             method => 'edifact',
         });
index 89ae268..85782ec 100755 (executable)
@@ -64,8 +64,7 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user(
 );
 
 # Determine if we should be offering any enhancement plugin buttons
-if ( C4::Context->preference('UseKohaPlugins') &&
-     C4::Context->config('enable_plugins') ) {
+if ( C4::Context->config('enable_plugins') ) {
     # Only pass plugins that can offer a toolbar button
     my @plugins = Koha::Plugins->new()->GetPlugins({
         method => 'intranet_catalog_biblio_enhancements_toolbar_button'
diff --git a/installer/data/mysql/atomicupdate/bug_20415.sql b/installer/data/mysql/atomicupdate/bug_20415.sql
new file mode 100644 (file)
index 0000000..f1bb79b
--- /dev/null
@@ -0,0 +1 @@
+DELETE FROM systempreferences WHERE variable='UseKohaPlugins';
\ No newline at end of file
index 6eeff84..0313824 100644 (file)
@@ -674,7 +674,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('useDischarge','','','Allows librarians to discharge borrowers and borrowers to request a discharge','YesNo'),
 ('UseEmailReceipts','0','','Send email receipts for payments and write-offs','YesNo'),
 ('UseICU','0','1','Tell Koha if ICU indexing is in use for Zebra or not.','YesNo'),
-('UseKohaPlugins','0','','Enable or disable the ability to use Koha Plugins.','YesNo'),
 ('UseTransportCostMatrix','0','','Use Transport Cost Matrix when filling holds','YesNo'),
 ('UseWYSIWYGinSystemPreferences','0','','Show WYSIWYG editor when editing certain HTML system preferences.','YesNo'),
 ('viewISBD','1','','Allow display of ISBD view of bibiographic records','YesNo'),
index 033c048..fc47dca 100644 (file)
@@ -349,13 +349,6 @@ Enhanced Content:
                   yes: "Embed"
                   no: "Don't embed"
             - YouTube links as videos.
-    Plugins:
-        -
-            - pref: UseKohaPlugins
-              choices:
-                  yes: Enable
-                  no: "Don't enable"
-            - the ability to use Koha Plugins. Note, the plugin system must also be enabled in the Koha configuration file to be fully enabled.
     OverDrive:
         -
             - Include OverDrive availability information with the client key
index 69dd99e..073ddbb 100755 (executable)
@@ -31,9 +31,7 @@ GetOptions( 'help|?' => \$help );
 
 pod2usage(1) if $help;
 
-my $plugins_enabled = C4::Context->preference('UseKohaPlugins')
-  && C4::Context->config("enable_plugins");
-unless ($plugins_enabled) {
+unless ( C4::Context->config("enable_plugins") ) {
     print
 "The plugin system must be enabled for one to be able to install plugins\n";
     exit 1;
index 8ba2ba3..c5a149d 100755 (executable)
@@ -84,8 +84,7 @@ $template->param(
     payment_error       => scalar $query->param('payment-error') || q{},
 );
 
-my $plugins_enabled = C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins");
-if ( $plugins_enabled ) {
+if ( C4::Context->config("enable_plugins") ) {
     my @plugins = Koha::Plugins->new()->GetPlugins({
         method => 'opac_online_payment',
     });
index 30d1e3e..9e7714c 100755 (executable)
@@ -23,8 +23,7 @@ use C4::Context;
 use C4::Auth qw(check_cookie_auth);
 use Koha::Plugins::Handler;
 
-die("Koha plugins are disabled!")
-  unless C4::Context->preference('UseKohaPlugins');
+die("Koha plugins are disabled!") unless C4::Context->config("enable_plugins");
 
 my $input = new CGI;
 
index 0e7de02..f376e17 100755 (executable)
@@ -30,7 +30,7 @@ use C4::Output;
 use C4::Debug;
 use C4::Context;
 
-my $plugins_enabled = C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins");
+my $plugins_enabled = C4::Context->config("enable_plugins");
 
 my $input  = new CGI;
 my $method = $input->param('method');
index 16138e8..39334b2 100755 (executable)
@@ -29,8 +29,7 @@ use C4::Members;
 use C4::Debug;
 use Koha::Plugins::Handler;
 
-die("Koha plugins are disabled!")
-  unless C4::Context->preference('UseKohaPlugins');
+die("Koha plugins are disabled!") unless C4::Context->config("enable_plugins");
 
 my $input = new CGI;
 
index 90b8730..c4e8a20 100755 (executable)
@@ -31,7 +31,7 @@ use C4::Members;
 use C4::Debug;
 use Koha::Plugins;
 
-my $plugins_enabled = C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins");
+my $plugins_enabled = C4::Context->config("enable_plugins");
 
 my $input = new CGI;
 
index da265de..54bdf84 100755 (executable)
@@ -27,7 +27,7 @@ use C4::Output;
 use C4::Debug;
 use C4::Context;
 
-my $plugins_enabled = C4::Context->preference('UseKohaPlugins') && C4::Context->config("enable_plugins");
+my $plugins_enabled = C4::Context->config("enable_plugins");
 
 my $cgi = new CGI;
 
index c9d24b8..f437edc 100644 (file)
@@ -190,7 +190,6 @@ subtest "RecordsFromMarcPlugin" => sub {
     close $fh;
 
     t::lib::Mocks::mock_config( 'enable_plugins', 1 );
-    t::lib::Mocks::mock_preference( 'UseKohaPlugins', 1 );
 
     my $plugins = Koha::Plugins->new;
     $plugins->InstallPlugins;
index 18a138c..bfc83b3 100755 (executable)
@@ -39,7 +39,6 @@ BEGIN {
 my $schema  = Koha::Database->new->schema;
 my $builder = t::lib::TestBuilder->new;
 
-t::lib::Mocks::mock_preference( 'UseKohaPlugins', 1 );
 t::lib::Mocks::mock_config( 'enable_plugins', 1 );
 
 subtest 'after_biblio_action() and after_item_action() hooks tests' => sub {
index b337897..22bf9b2 100644 (file)
@@ -40,7 +40,6 @@ BEGIN {
 my $schema  = Koha::Database->new->schema;
 my $builder = t::lib::TestBuilder->new;
 
-t::lib::Mocks::mock_preference( 'UseKohaPlugins', 1 );
 t::lib::Mocks::mock_config( 'enable_plugins', 1 );
 
 subtest 'check_password hook tests' => sub {
index 278137f..6ebe67b 100644 (file)
@@ -48,7 +48,6 @@ subtest 'Bad plugins tests' => sub {
 
     # enable plugins
     t::lib::Mocks::mock_config( 'enable_plugins', 1 );
-    t::lib::Mocks::mock_preference( 'UseKohaPlugins', 1 );
 
     # remove any existing plugins that might interfere
     Koha::Plugins::Methods->search->delete;
@@ -84,7 +83,6 @@ subtest 'Disabled plugins tests' => sub {
 
     # enable plugins
     t::lib::Mocks::mock_config( 'enable_plugins', 1 );
-    t::lib::Mocks::mock_preference( 'UseKohaPlugins', 1 );
 
     my $good_plugin;
 
index f0ff5b3..22cf765 100755 (executable)
@@ -24,7 +24,6 @@ BEGIN {
     use_ok('Koha::Plugin::Test');
 }
 
-t::lib::Mocks::mock_preference( 'UseKohaPlugins', 1 );
 t::lib::Mocks::mock_config( 'enable_plugins', 1 );
 
 my $schema = Koha::Database->new->schema;
@@ -53,7 +52,6 @@ ok( index( $plugin->get_plugins_opac_head, 'Koha::Plugin::Test::opac_head' ) !=
 ok( index( $plugin->get_plugins_intranet_js, 'Koha::Plugin::Test::intranet_js' ) != -1, 'Test plugin intranet_js return value is part of code returned by get_plugins_intranet_js' );
 ok( index( $plugin->get_plugins_intranet_head, 'Koha::Plugin::Test::intranet_head' ) != -1, 'Test plugin intranet_head return value is part of code returned by get_plugins_intranet_head' );
 
-t::lib::Mocks::mock_preference('UseKohaPlugins',0);
 t::lib::Mocks::mock_config('enable_plugins',0);
 is( $plugin->get_plugins_opac_js, q{}, 'Test plugin opac_js return value is empty' );
 is( $plugin->get_plugins_opac_head, q{}, 'Test plugin opac_head return value is empty' );
index 9241b27..7aab6e3 100644 (file)
@@ -474,7 +474,6 @@ sub mocking_systempreferences_to_a_set_value {
         NovelistSelectEnabled
         OpenLibraryCovers
         OpenLibrarySearch
-        UseKohaPlugins
         SyndeticsEnabled
         TagsEnabled
         CalendarFirstDayOfWeek
index d76c35a..78424bb 100755 (executable)
@@ -218,8 +218,7 @@ if ($completedJobID) {
     my @templates = GetModificationTemplates();
     $template->param( MarcModificationTemplatesLoop => \@templates );
 
-    if ( C4::Context->preference('UseKohaPlugins') &&
-         C4::Context->config('enable_plugins') ) {
+    if ( C4::Context->config('enable_plugins') ) {
 
         my @plugins = Koha::Plugins->new()->GetPlugins({
             method => 'to_marc',