Lines 1344-1350
subtest 'StaffLoginBranchBasedOnIP' => sub {
Link Here
|
1344 |
|
1344 |
|
1345 |
subtest 'AutoLocation' => sub { |
1345 |
subtest 'AutoLocation' => sub { |
1346 |
|
1346 |
|
1347 |
plan tests => 8; |
1347 |
plan tests => 9; |
1348 |
|
1348 |
|
1349 |
$schema->storage->txn_begin; |
1349 |
$schema->storage->txn_begin; |
1350 |
|
1350 |
|
Lines 1366-1372
subtest 'AutoLocation' => sub {
Link Here
|
1366 |
|
1366 |
|
1367 |
$ENV{REMOTE_ADDR} = '127.0.0.1'; |
1367 |
$ENV{REMOTE_ADDR} = '127.0.0.1'; |
1368 |
my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1368 |
my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1369 |
is( $userid, $patron->userid ); |
1369 |
is( $userid, $patron->userid, "Standard login without AutoLocation" ); |
1370 |
|
1370 |
|
1371 |
my $template; |
1371 |
my $template; |
1372 |
t::lib::Mocks::mock_preference( 'AutoLocation', 1 ); |
1372 |
t::lib::Mocks::mock_preference( 'AutoLocation', 1 ); |
Lines 1375-1407
subtest 'AutoLocation' => sub {
Link Here
|
1375 |
$patron->library->branchip('')->store; # There is none, allow access from anywhere |
1375 |
$patron->library->branchip('')->store; # There is none, allow access from anywhere |
1376 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1376 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1377 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1377 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1378 |
is( $userid, $patron->userid ); |
1378 |
is( $userid, $patron->userid, "Login is successful when patron's branch does not have an IP" ); |
1379 |
is( $template, undef ); |
1379 |
is( $template, undef, "Template is undef as none passed and not sent to error page" ); |
1380 |
|
1380 |
|
1381 |
$patron->library->branchip('1.2.3.4')->store; |
1381 |
$patron->library->branchip('1.2.3.4')->store; |
1382 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1382 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1383 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } ); |
1383 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } ); |
1384 |
is( $template->{VARS}->{wrongip}, 1 ); |
1384 |
is( |
|
|
1385 |
$template->{VARS}->{wrongip}, 1, |
1386 |
"Login denied when no branch specified and IP does not match patron's branch IP" |
1387 |
); |
1385 |
|
1388 |
|
1386 |
$patron->library->branchip('127.0.0.1')->store; |
1389 |
$patron->library->branchip('127.0.0.1')->store; |
1387 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1390 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1388 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1391 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1389 |
is( $userid, $patron->userid ); |
1392 |
is( $userid, $patron->userid, "Login is successful when patron IP and branch IP match" ); |
1390 |
is( $template, undef ); |
1393 |
is( $template, undef, "Template is undef as none passed and not sent to error page" ); |
1391 |
|
1394 |
|
1392 |
my $other_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '127.0.0.1' } } ); |
1395 |
my $other_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '127.0.0.1' } } ); |
1393 |
$patron->library->branchip('127.0.0.1')->store; |
1396 |
$patron->library->branchip('127.0.0.1')->store; |
1394 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1397 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1395 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1398 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1396 |
my $session = C4::Auth::get_session($sessionID); |
1399 |
my $session = C4::Auth::get_session($sessionID); |
1397 |
is( $session->param('branch'), $patron->branchcode ); |
1400 |
is( |
|
|
1401 |
$session->param('branch'), $patron->branchcode, |
1402 |
"If no branch specified, and IP matches patron branch, login is successful at patron branch even if another branch IP matches" |
1403 |
); |
1404 |
|
1405 |
$cgi->param( 'branch', $other_library->branchcode ); |
1406 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1407 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } ); |
1408 |
$session = C4::Auth::get_session($sessionID); |
1409 |
is( |
1410 |
$session->param('branch'), $other_library->branchcode, |
1411 |
"AutoLocation allows specifying a branch as long as the IP matches" |
1412 |
); |
1413 |
|
1414 |
$other_library->branchip('129.0.0.1')->store; |
1415 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1416 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } ); |
1417 |
is( $template->{VARS}->{wrongip}, 1, "Login denied when branch specified and IP does not match branch IP" ); |
1398 |
|
1418 |
|
1399 |
my $noip_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '' } } ); |
1419 |
my $noip_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '' } } ); |
1400 |
$cgi->param( 'branch', $noip_library->branchcode ); |
1420 |
$cgi->param( 'branch', $noip_library->branchcode ); |
1401 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1421 |
( $userid, $cookie, $sessionID, $flags, $template ) = |
1402 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1422 |
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); |
1403 |
$session = C4::Auth::get_session($sessionID); |
1423 |
$session = C4::Auth::get_session($sessionID); |
1404 |
is( $session->param('branch'), $noip_library->branchcode ); |
1424 |
is( $session->param('branch'), $noip_library->branchcode, "When a branch with no IP set is chosen, we respect the choice regardless of current IP" ); |
1405 |
|
1425 |
|
1406 |
$schema->storage->txn_rollback; |
1426 |
$schema->storage->txn_rollback; |
1407 |
|
1427 |
|
1408 |
- |
|
|