From 8b700d6e9bc129b2736c5ef439d7bdd0ca4ed1d2 Mon Sep 17 00:00:00 2001 From: Nicholas van Oudtshoorn Date: Thu, 14 Mar 2024 11:47:06 +0800 Subject: [PATCH] Return to the page you were on when authenticating, stripping the logout instruction from the referer uri. If the referer uri doesn't match the base url, redirect to either the main page or the user page. --- opac/cgi-bin/opac/svc/auth/googleopenidconnect | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/opac/cgi-bin/opac/svc/auth/googleopenidconnect b/opac/cgi-bin/opac/svc/auth/googleopenidconnect index cde334f..ad43f0b 100755 --- a/opac/cgi-bin/opac/svc/auth/googleopenidconnect +++ b/opac/cgi-bin/opac/svc/auth/googleopenidconnect @@ -214,12 +214,16 @@ elsif ( defined $query->param('code') ) { #handle redirect to main.pl, for private opac my $uri; my $referer = $session->param( 'auth-refer-uri' ); - if (C4::Context->preference('OpacPublic') ) { + if ( $referer =~ /^$host/ ) { + my $regex = qr/logout\.x=1/mp; + $uri = $referer =~ s/$regex//rg; + } else { + if (C4::Context->preference('OpacPublic') ) { $uri = '/cgi-bin/koha/opac-user.pl'; - } else { + } else { $uri = '/cgi-bin/koha/opac-main.pl'; - } - $uri = $referer; + } + } print $query->redirect( -uri => $uri, -cookie => $cookie -- 2.34.1