| 
      
            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 | 
              -   | 
               | 
               |