Bug 34478: Manual fix - Make Koha::Token use session id not userenv id

Bug 34478: [TO SQUASH] Manual fix - Make Koha::Token use session id not userenv id

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
David Cook 2024-02-15 03:06:00 +00:00 committed by Jonathan Druart
parent 3f9b523bc5
commit d75f1df99d
No known key found for this signature in database
GPG Key ID: A085E712BEF0E0F0
1 changed files with 12 additions and 4 deletions

View File

@ -57,6 +57,8 @@ use Digest::MD5 qw( md5_base64 );
use Encode;
use C4::Context;
use Koha::Exceptions::Token;
use Koha::Session;
use base qw(Class::Accessor);
use constant HMAC_SHA1_LENGTH => 20;
use constant CSRF_EXPIRY_HOURS => 8; # 8 hours instead of 7 days..
@ -215,11 +217,17 @@ sub decode_jwt {
sub _add_default_csrf_params {
my ( $params ) = @_;
$params->{session_id} //= DEFA_SESSION_ID;
my $userenv = C4::Context->userenv;
if ( ( !$userenv ) || !$userenv->{id} ) {
$userenv = { id => DEFA_SESSION_USERID };
my $id;
my $session = Koha::Session->get_session( { sessionID => $params->{session_id} } );
if ($session) {
$id = $session->param('id');
}
$params->{id} //= Encode::encode( 'UTF-8', $userenv->{id} );
if ( !$id ) {
$id = DEFA_SESSION_USERID;
}
$params->{id} //= Encode::encode( 'UTF-8', $id );
$params->{id} .= '_' . $params->{session_id};
my $pw = C4::Context->config('pass');