From a2d9557a8f0cfffbf50e502eefa067a5c705c1fb Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Fri, 29 Nov 2013 14:16:27 +0000
Subject: [PATCH] BUG8446, Follow up: Adds Shibboleth authentication

- Use syspref OpacBaseURL instead of ENV{'SERVER_NAME'} as this wont
  work if koha is behind a reverse proxy.
  - To use multiple vhosts, set OpacBaseURL per vhost explicitly with
    'SetEnv OpacBaseURL Value' as per Bug 10325

BUG8446, Follow up: Adds Shibboleth authentication

- Ensure user is returned to requested page after authentication
  - Added querystring to the target path in shibboleth URL so
    that when a user is authenticated he/she is returned to the
    correct page they requested before authentication.
    Example where this is important: When a user clicks a direct
    biblio link of the form - /opac-detail.pl?biblionumber=12345

BUG8446, Follow up: Remove unused imports from scripts

- Remove import of deprecated C4::Utils module from shibboleth
  authentication module: Auth_with_shibboleth.pm
---
 C4/Auth_with_Shibboleth.pm |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/C4/Auth_with_Shibboleth.pm b/C4/Auth_with_Shibboleth.pm
index 3b0a9fb..13f4b79 100644
--- a/C4/Auth_with_Shibboleth.pm
+++ b/C4/Auth_with_Shibboleth.pm
@@ -22,7 +22,6 @@ use warnings;
 
 use C4::Debug;
 use C4::Context;
-use C4::Utils qw( :all );
 use CGI;
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug);
@@ -40,7 +39,7 @@ my $protocol = "https://";
 # Logout from Shibboleth
 sub logout_shib {
     my ($query) = @_;
-    my $uri = $protocol . $ENV{'SERVER_NAME'};
+    my $uri = $protocol . C4::Context->preference('OPACBaseURL');
     print $query->redirect( $uri . "/Shibboleth.sso/Logout?return=$uri" );
 }
 
@@ -48,8 +47,11 @@ sub logout_shib {
 sub login_shib_url {
 
     my ($query) = @_;
-    my $param = $protocol . $ENV{'SERVER_NAME'} . $query->script_name();
-    my $uri = $protocol . $ENV{'SERVER_NAME'} . "/Shibboleth.sso/Login?target=$param";
+    my $param = $protocol . C4::Context->preference('OPACBaseURL') . $query->script_name();
+    if ( $query->query_string() ) {
+        $param = $param . '%3F' . $query->query_string();
+    }
+    my $uri = $protocol . C4::Context->preference('OPACBaseURL') . "/Shibboleth.sso/Login?target=$param";
     return $uri;
 }
 
-- 
1.7.10.4