From 9bfd30ce8e6a0f622dc612a8548a7367fbc875b5 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 31 Jul 2014 06:21:55 +0000 Subject: [PATCH] BUG 12027: Added shibboleth authentication to the staff client - This patch adds shibboleth authentication to the staff client. - Depending upon how your url structure works, you may or may not need a second native shibboleth service provider profile configured for this to work. http://bugs.koha-community.org/show_bug.cgi?id=12026 --- C4/Auth.pm | 8 +++----- C4/Auth_with_shibboleth.pm | 13 +++++++++++-- koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt | 8 ++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/C4/Auth.pm b/C4/Auth.pm index e6c121a..2a02c3f 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -800,9 +800,7 @@ sub checkauth { } # If we are in a shibboleth session (shibboleth is enabled, a shibboleth match attribute is set and matches koha matchpoint) - if ( $shib and $shib_login and $shibSuccess and $type eq 'opac' ) { - - # (Note: $type eq 'opac' condition should be removed when shibboleth authentication for intranet will be implemented) + if ( $shib and $shib_login and $shibSuccess) { logout_shib($query); } } @@ -887,8 +885,8 @@ sub checkauth { my ( $return, $cardnumber ); - # If shib is enabled and we have a shib login, does the login match a valid koha user - if ( $shib && $shib_login && $type eq 'opac' ) { + # If shib is enabled and we have a shib login, does the login match a valid koha user + if ( $shib && $shib_login ) { my $retuserid; # Do not pass password here, else shib will not be checked in checkpw. diff --git a/C4/Auth_with_shibboleth.pm b/C4/Auth_with_shibboleth.pm index f30281f..f1ae0fb 100644 --- a/C4/Auth_with_shibboleth.pm +++ b/C4/Auth_with_shibboleth.pm @@ -49,6 +49,7 @@ sub shib_ok { return 0; } + # Logout from Shibboleth sub logout_shib { my ($query) = @_; @@ -116,9 +117,17 @@ sub checkpw_shib { sub _get_uri { my $protocol = "https://"; + my $interface = C4::Context->interface; + $debug and warn "shibboleth interface: " . $interface; - my $return = $protocol . C4::Context->preference('OPACBaseURL'); - return $return; + my $return; + if ( $interface eq 'intranet' ) { + $return = $protocol . C4::Context->preference('staffClientBaseURL'); + return $return; + } else { + $return = $protocol . C4::Context->preference('OPACBaseURL'); + return $return; + } } sub _get_shib_config { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt index 5f97758..035c049 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt @@ -42,6 +42,14 @@
Error: Invalid username or password
[% END %] +[% IF (shibbolethAuthentication) %] + +[% IF (invalidShibLogin ) %] +
Error: Shibboleth login failed
+[% END %] +

If you have a shibboleth account, please click here to login.

+[% END %] +
-- 1.7.10.4