From dddf0efae2b1ebde1ed4a417cf6561bdf9e96266 Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Fri, 2 Sep 2016 12:30:33 +0200 Subject: [PATCH] Bug 17240 - Allow processes that rely on background jobs run in Plack mode - prepare This adds prepares the main one by adding method "is_psgi" to C4::Context and using it in C4::Auth for all templates. It is used by about.pl and Koha::AuthUtils. Test plan : - On a Koha running with Plack - Go to about.pl - Look at line "PGSI:" => You should see "Plack" - Enable CAS authentication - Go to OPAC auth page - Look at the CAS link => You see the current page in this URL --- C4/Auth.pm | 1 + C4/Context.pm | 13 +++++++++++++ Koha/AuthUtils.pm | 4 ++-- about.pl | 4 +--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/C4/Auth.pm b/C4/Auth.pm index 17e2cc1..212da4c 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -435,6 +435,7 @@ sub get_template_and_user { marcflavour => C4::Context->preference("marcflavour"), persona => C4::Context->preference("persona"), OPACBaseURL => C4::Context->preference('OPACBaseURL'), + is_psgi => C4::Context->is_psgi ? 1 : 0, ); if ( $in->{'type'} eq "intranet" ) { $template->param( diff --git a/C4/Context.pm b/C4/Context.pm index 4ff47af..d68b08a 100644 --- a/C4/Context.pm +++ b/C4/Context.pm @@ -113,6 +113,7 @@ use POSIX (); use DateTime::TimeZone; use Module::Load::Conditional qw(can_load); use Carp; +use List::MoreUtils qw(any); use C4::Boolean; use C4::Debug; @@ -1140,6 +1141,18 @@ sub interface { return $context->{interface} // 'opac'; } +=head2 interface + + C4::Context->is_psgi + + Returns if using PSGI mode (Plack) instead of CGI mode + +=cut + +sub is_psgi { + return any { /(^psgi\.|^plack\.)/i } keys %ENV; +} + 1; __END__ diff --git a/Koha/AuthUtils.pm b/Koha/AuthUtils.pm index a8b391d..2553080 100644 --- a/Koha/AuthUtils.pm +++ b/Koha/AuthUtils.pm @@ -21,7 +21,7 @@ use Modern::Perl; use Crypt::Eksblowfish::Bcrypt qw(bcrypt en_base64); use Encode qw( encode is_utf8 ); use Fcntl qw/O_RDONLY/; # O_RDONLY is used in generate_salt -use List::MoreUtils qw/ any /; +use C4::Context; use base 'Exporter'; @@ -145,7 +145,7 @@ outside this context. sub get_script_name { # This is the method about.pl uses to detect Plack; now that two places use it, it MUST be # right. - if ( ( any { /(^psgi\.|^plack\.)/i } keys %ENV ) && $ENV{SCRIPT_NAME} =~ m,^/(intranet|opac)(.*), ) { + if ( C4::Context->is_psgi && $ENV{SCRIPT_NAME} =~ m,^/(intranet|opac)(.*), ) { return '/cgi-bin/koha' . $2; } else { return $ENV{SCRIPT_NAME}; diff --git a/about.pl b/about.pl index ca8ff9f..8ba35b2 100755 --- a/about.pl +++ b/about.pl @@ -23,7 +23,6 @@ use Modern::Perl; use CGI qw ( -utf8 ); -use List::MoreUtils qw/ any /; use LWP::Simple; use XML::Simple; use Config; @@ -61,9 +60,8 @@ if ($^O ne 'VMS') { my $zebraVersion = `zebraidx -V`; # Check running PSGI env -if ( any { /(^psgi\.|^plack\.)/i } keys %ENV ) { +if ( C4::Context->is_psgi ) { $template->param( - is_psgi => 1, psgi_server => ($ENV{ PLACK_ENV }) ? "Plack ($ENV{PLACK_ENV})" : ($ENV{ MOD_PERL }) ? "mod_perl ($ENV{MOD_PERL})" : 'Unknown' -- 2.7.4