From 495a48d1bb8bc13b7f111654dc883c1a91f77afc Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 22 May 2024 13:08:43 +0000 Subject: [PATCH] Bug 36665: (follow-up) Allow choosing a branch with no IP when using AutoLocation Signed-off-by: Jonathan Druart Signed-off-by: Katrin Fischer (cherry picked from commit 58a75cafd6934f2a1b938aac12493bdb7bb53724) Signed-off-by: Fridolin Somers (cherry picked from commit 190fc91e2980c94b3c2540aae0e668fd66e551f6) Signed-off-by: Lucas Gass --- C4/Auth.pm | 8 +++++++- t/db_dependent/Auth.t | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/C4/Auth.pm b/C4/Auth.pm index adb803ce80..0f3516b600 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -1216,11 +1216,17 @@ sub checkauth { } if ( + # If StaffLoginBranchBasedOnIP is enabled we will try to find a branch + # matching your ip, regardless of the choice you have passed in ( !C4::Context->preference('AutoLocation') && C4::Context->preference('StaffLoginBranchBasedOnIP') ) - || ( C4::Context->preference('AutoLocation') && $auth_state ne 'failed' ) + # When AutoLocation is enabled we will not choose a branch matching IP + # if your selected branch has no IP set + || ( C4::Context->preference('AutoLocation') + && $auth_state ne 'failed' + && $branches->{$branchcode}->{'branchip'} ) ) { foreach my $br ( uniq( $branchcode, keys %$branches ) ) { diff --git a/t/db_dependent/Auth.t b/t/db_dependent/Auth.t index 7c8e0bb58b..42f8958d7c 100755 --- a/t/db_dependent/Auth.t +++ b/t/db_dependent/Auth.t @@ -1387,7 +1387,7 @@ subtest 'StaffLoginBranchBasedOnIP' => sub { subtest 'AutoLocation' => sub { - plan tests => 7; + plan tests => 8; $schema->storage->txn_begin; @@ -1439,6 +1439,13 @@ subtest 'AutoLocation' => sub { my $session = C4::Auth::get_session($sessionID); is( $session->param('branch'), $patron->branchcode ); + my $noip_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '' } } ); + $cgi->param( 'branch', $noip_library->branchcode ); + ( $userid, $cookie, $sessionID, $flags, $template ) = + C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); + $session = C4::Auth::get_session($sessionID); + is( $session->param('branch'), $noip_library->branchcode ); + $schema->storage->txn_rollback; }; -- 2.39.5