From e586673ba9d7702420c1f0ff2be0087087ba4361 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Mon, 14 Mar 2022 11:30:57 +0000 Subject: [PATCH] Bug 29957: Replace clear_all_cookies in Auth.pm Content-Type: text/plain; charset=utf-8 Test plan: Enable language selection and have two languages. Add removable_cookie line for KohaOpacLanguage in koha-conf. Restart, flush. Login, logout from opac or staff. Check in browser dev console that value of this cookie is cleared, noting that the httponly flag has been unset. Remove the added line in koha-conf. Restart, flush. Login. Change language. Logout. Check if cookie is preserved. Signed-off-by: Marcel de Rooy --- C4/Auth.pm | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/C4/Auth.pm b/C4/Auth.pm index 1a1aebe3e2..e690fc473d 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -47,6 +47,7 @@ use Encode; use C4::Auth_with_shibboleth qw( shib_ok get_login_shib login_shib_url logout_shib checkpw_shib ); use Net::CIDR; use C4::Log qw( logaction ); +use Koha::CookieManager; # use utf8; @@ -805,15 +806,6 @@ sub _timeout_syspref { return $timeout; } -sub clear_all_cookies { - my ( $query ) = shift; - my @cookies; - for my $cookie_name ( $query->cookie ) { - push @cookies, $query->cookie( -name => $cookie_name, -value => '', -expires => '', -HttpOnly => 1 ); - } - return \@cookies; -} - sub checkauth { my $query = shift; @@ -844,6 +836,8 @@ sub checkauth { my $dbh = C4::Context->dbh; my $timeout = _timeout_syspref(); + my $cookie_mgr = Koha::CookieManager->new; + _version_check( $type, $query ); # state variables @@ -917,7 +911,7 @@ sub checkauth { my $shibSuccess = C4::Context->userenv->{'shibboleth'}; $session->delete(); $session->flush; - $cookie = clear_all_cookies($query); + $cookie = $cookie_mgr->clear_if_allowed( $query->cookie, @$cookie ); C4::Context->_unset_userenv($sessionID); if ($cas and $caslogout) { -- 2.20.1