@@ -, +, @@ StaffLoginRestrictBranchByIP --- C4/Auth.pm | 10 ++++---- C4/UsageStats.pm | 2 +- installer/data/mysql/mandatory/sysprefs.sql | 4 +-- .../intranet-tmpl/prog/en/includes/header.inc | 4 +-- .../en/modules/admin/preferences/admin.pref | 4 +-- t/db_dependent/Auth.t | 25 +++++++++---------- 6 files changed, 24 insertions(+), 25 deletions(-) --- a/C4/Auth.pm +++ a/C4/Auth.pm @@ -498,7 +498,7 @@ sub get_template_and_user { advancedMARCEditor => C4::Context->preference("advancedMARCEditor"), AllowMultipleCovers => C4::Context->preference('AllowMultipleCovers'), AmazonCoverImages => C4::Context->preference("AmazonCoverImages"), - AutoLocation => C4::Context->preference("AutoLocation"), + StaffLoginRestrictBranchByIP => C4::Context->preference("StaffLoginRestrictBranchByIP"), can_see_cataloguing_module => haspermission( $user, get_cataloguing_page_permissions() ) ? 1 : 0, canreservefromotherbranches => C4::Context->preference('canreservefromotherbranches'), EasyAnalyticalRecords => C4::Context->preference('EasyAnalyticalRecords'), @@ -1216,7 +1216,7 @@ sub checkauth { } if ( $type ne 'opac' ) { my $branches = { map { $_->branchcode => $_->unblessed } Koha::Libraries->search->as_list }; - if ( C4::Context->preference('AutoLocation') ) { + if ( C4::Context->preference('StaffLoginRestrictBranchByIP') ) { # we have to check they are coming from the right ip range my $domain = $branches->{$branchcode}->{'branchip'}; $domain =~ s|\.\*||g; @@ -1236,10 +1236,10 @@ sub checkauth { if ( ( - !C4::Context->preference('AutoLocation') + !C4::Context->preference('StaffLoginRestrictBranchByIP') && C4::Context->preference('StaffLoginBranchBasedOnIP') ) - || ( C4::Context->preference('AutoLocation') && $auth_state ne 'failed' ) + || ( C4::Context->preference('StaffLoginRestrictBranchByIP') && $auth_state ne 'failed' ) ) { my @branchcodes = sort { lc $a cmp lc $b } keys %$branches; @@ -1438,7 +1438,7 @@ sub checkauth { IntranetUserCSS => C4::Context->preference("IntranetUserCSS"), IntranetUserJS => C4::Context->preference("IntranetUserJS"), IndependentBranches => C4::Context->preference("IndependentBranches"), - AutoLocation => C4::Context->preference("AutoLocation"), + StaffLoginRestrictBranchByIP => C4::Context->preference("StaffLoginRestrictBranchByIP"), wrongip => $info{'wrongip'}, PatronSelfRegistration => C4::Context->preference("PatronSelfRegistration"), PatronSelfRegistrationDefaultCategory => C4::Context->preference("PatronSelfRegistrationDefaultCategory"), --- a/C4/UsageStats.pm +++ a/C4/UsageStats.pm @@ -146,7 +146,7 @@ sub _shared_preferences { noItemTypeImages OpacNoItemTypeImages virtualshelves - AutoLocation + StaffLoginRestrictBranchByIP IndependentBranches SessionStorage Persona --- a/installer/data/mysql/mandatory/sysprefs.sql +++ a/installer/data/mysql/mandatory/sysprefs.sql @@ -90,7 +90,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AutoCreditNumber', '', '', 'Automatically generate a number for account credits', 'Choice'), ('AutoEmailNewUser','0',NULL,'Send an email to newly created patrons.','YesNo'), ('AutoLinkBiblios','0',NULL,'If enabled, link biblio to authorities on creation and edit','YesNo'), -('AutoLocation','0',NULL,'If ON, IP authentication is enabled, blocking access to the staff interface from unauthorized IP addresses','YesNo'), ('AutomaticCheckinAutoFill','0',NULL,'Automatically fill the next hold with an automatic check in.','YesNo'), ('AutomaticConfirmTransfer','0',NULL,'Defines whether transfers should be automatically confirmed at checkin if modal dismissed','YesNo'), ('AutomaticItemReturn','1',NULL,'If ON, Koha will automatically set up a transfer of this item to its homebranch','YesNo'), @@ -736,8 +735,9 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('StaffDetailItemSelection', '1', NULL, 'Enable item selection in record detail page', 'YesNo'), ('StaffHighlightedWords','1','','Highlight search terms on staff interface','YesNo'), ('StaffLangSelectorMode','footer','top|both|footer','Select the location to display the language selector in staff interface','Choice'), -('StaffLoginInstructions', '', NULL, 'HTML to go into the login box for the staff interface','Free'), ('StaffLoginBranchBasedOnIP', '0','', 'Set the logged in branch for the user based on their current IP','YesNo'), +('StaffLoginInstructions', '', NULL, 'HTML to go into the login box for the staff interface','Free'), +('StaffLoginRestrictBranchByIP','0',NULL,'If ON, IP authentication is enabled, blocking access to the staff interface from unauthorized IP addresses based on branch','YesNo'), ('StaffSearchResultsDisplayBranch','holdingbranch','holdingbranch|homebranch','Controls the display of the home or holding branch for staff search results','Choice'), ('StaffSerialIssueDisplayCount','3','','Number of serial issues to display per subscription in the staff interface','Integer'), ('staffShibOnly','0','','If ON enables shibboleth only authentication for the staff client','YesNo'), --- a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc @@ -95,7 +95,7 @@ [% SET is_superlibrarian = CAN_user_superlibrarian ? 'is_superlibrarian' : '' %] [% logged_in_user.userid | html %] [% logged_in_user.categorycode | html %] - [% IF ( AutoLocation ) %] + [% IF ( StaffLoginRestrictBranchByIP ) %] [% Branches.GetLoggedInBranchname | html %] @@ -133,7 +133,7 @@ [% logged_in_user.userid | html %]
  • - [% IF ( AutoLocation ) %] + [% IF ( StaffLoginRestrictBranchByIP ) %] [% Branches.GetLoggedInBranchname | html %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref @@ -92,7 +92,7 @@ Administration: - Adding d will specify it in days, e.g. 1d is timeout of one day. - - "Require staff to log in from a computer in the IP address range specified by their library or the branch chosen at login (if any): " - - pref: AutoLocation + - pref: StaffLoginRestrictBranchByIP default: 0 choices: 1: "Yes" @@ -115,7 +115,7 @@ Administration: 1: "Yes" 0: "No" - "Note: If IPs overlap, the first found match will be used." - - 'This setting will be overridden by AutoLocation system preference. In the event of multiple branches with matching IPs, branchcode (alphabetically) will be the tie breaker.' + - 'This setting will be overridden by StaffLoginRestrictBranchByIP system preference. In the event of multiple branches with matching IPs, branchcode (alphabetically) will be the tie breaker.' # PostgreSQL is supported by CGI::Session but not by Koha. - - "Storage of login session information: " --- a/t/db_dependent/Auth.t +++ a/t/db_dependent/Auth.t @@ -1298,8 +1298,8 @@ subtest 'StaffLoginBranchBasedOnIP' => sub { $schema->storage->txn_begin; - t::lib::Mocks::mock_preference( 'AutoLocation', 0 ); - t::lib::Mocks::mock_preference( 'StaffLoginBranchBasedOnIP', 0 ); + t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 0 ); + t::lib::Mocks::mock_preference( 'StaffLoginBranchBasedOnIP', 0 ); my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { flags => 1 } } ); my $branch = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => "127.0.0.1" } } ); @@ -1331,16 +1331,16 @@ subtest 'StaffLoginBranchBasedOnIP' => sub { $session = C4::Auth::get_session($sessionID); is( $session->param('branch'), $branch->branchcode, "Logged in branch is set based on the IP from REMOTE_ADDR " ); - # AutoLocation overrides StaffLoginBranchBasedOnIP - t::lib::Mocks::mock_preference( 'AutoLocation', 1 ); + # StaffLoginRestrictBranchByIP overrides StaffLoginBranchBasedOnIP + t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 1 ); ( $userid, $cookie, $sessionID, $flags, $template ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } ); is( $template->{VARS}->{wrongip}, 1, - "AutoLocation prevents StaffLoginBranchBasedOnIP from logging user in to another branch" + "StaffLoginRestrictBranchByIP prevents StaffLoginBranchBasedOnIP from logging user in to another branch" ); - t::lib::Mocks::mock_preference( 'AutoLocation', 0 ); + t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 0 ); my $other_branch = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => "127.0.0.1", branchcode => "z" . $branch->branchcode } } ); ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); @@ -1353,13 +1353,13 @@ subtest 'StaffLoginBranchBasedOnIP' => sub { }; -subtest 'AutoLocation' => sub { +subtest 'StaffLoginRestrictBranchByIP' => sub { plan tests => 10; $schema->storage->txn_begin; - t::lib::Mocks::mock_preference( 'AutoLocation', 0 ); + t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 0 ); my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { flags => 1 } } ); my $password = 'password'; @@ -1377,12 +1377,12 @@ subtest 'AutoLocation' => sub { $ENV{REMOTE_ADDR} = '127.0.0.1'; my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); - is( $userid, $patron->userid, "Standard login without AutoLocation" ); + is( $userid, $patron->userid, "Standard login without StaffLoginRestrictBranchByIP" ); my $template; - t::lib::Mocks::mock_preference( 'AutoLocation', 1 ); + t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 1 ); - # AutoLocation: "Require staff to log in from a computer in the IP address range specified by their library (if any)" + # StaffLoginRestrictBranchByIP: "Require staff to log in from a computer in the IP address range specified by their library (if any)" $patron->library->branchip('')->store; # There is none, allow access from anywhere ( $userid, $cookie, $sessionID, $flags, $template ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' ); @@ -1419,7 +1419,7 @@ subtest 'AutoLocation' => sub { $session = C4::Auth::get_session($sessionID); is( $session->param('branch'), $other_library->branchcode, - "AutoLocation allows specifying a branch as long as the IP matches" + "StaffLoginRestrictBranchByIP allows specifying a branch as long as the IP matches" ); $other_library->branchip('129.0.0.1')->store; @@ -1427,7 +1427,6 @@ subtest 'AutoLocation' => sub { C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } ); is( $template->{VARS}->{wrongip}, 1, "Login denied when branch specified and IP does not match branch IP" ); - $ENV{REMOTE_ADDR} = '129.0.0.1'; # Set current IP to match other_branch $cgi->param( 'branch', undef ); # Do not pass a branch $patron->library->branchip('')->store; # Unset user branch IP, to allow IP matching on any branch --