Bug 26176: (QA follow-up) Branch -> Library
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit f8915dc6e7)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
902c5a47a5
commit
c360d5e3a2
12
C4/Auth.pm
12
C4/Auth.pm
|
|
@ -480,7 +480,7 @@ sub get_template_and_user {
|
|||
advancedMARCEditor => C4::Context->preference("advancedMARCEditor"),
|
||||
AllowMultipleCovers => C4::Context->preference('AllowMultipleCovers'),
|
||||
AmazonCoverImages => C4::Context->preference("AmazonCoverImages"),
|
||||
StaffLoginRestrictBranchByIP => C4::Context->preference("StaffLoginRestrictBranchByIP"),
|
||||
StaffLoginRestrictLibraryByIP => C4::Context->preference("StaffLoginRestrictLibraryByIP"),
|
||||
can_see_cataloguing_module => haspermission( $user, get_cataloguing_page_permissions() ) ? 1 : 0,
|
||||
canreservefromotherbranches => C4::Context->preference('canreservefromotherbranches'),
|
||||
EasyAnalyticalRecords => C4::Context->preference('EasyAnalyticalRecords'),
|
||||
|
|
@ -1196,7 +1196,7 @@ sub checkauth {
|
|||
}
|
||||
if ( $type ne 'opac' ) {
|
||||
my $branches = { map { $_->branchcode => $_->unblessed } Koha::Libraries->search->as_list };
|
||||
if ( C4::Context->preference('StaffLoginRestrictBranchByIP') ) {
|
||||
if ( C4::Context->preference('StaffLoginRestrictLibraryByIP') ) {
|
||||
# we have to check they are coming from the right ip range
|
||||
my $domain = $branches->{$branchcode}->{'branchip'};
|
||||
$domain =~ s|\.\*||g;
|
||||
|
|
@ -1218,12 +1218,12 @@ sub checkauth {
|
|||
# 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('StaffLoginRestrictBranchByIP')
|
||||
!C4::Context->preference('StaffLoginRestrictLibraryByIP')
|
||||
&& C4::Context->preference('StaffLoginBranchBasedOnIP')
|
||||
)
|
||||
# When StaffLoginRestrictBranchByIP is enabled we will not choose a branch matching IP
|
||||
# When StaffLoginRestrictLibraryByIP is enabled we will not choose a branch matching IP
|
||||
# if your selected branch has no IP set
|
||||
|| ( C4::Context->preference('StaffLoginRestrictBranchByIP')
|
||||
|| ( C4::Context->preference('StaffLoginRestrictLibraryByIP')
|
||||
&& $auth_state ne 'failed'
|
||||
&& $branches->{$branchcode}->{'branchip'} )
|
||||
)
|
||||
|
|
@ -1410,7 +1410,7 @@ sub checkauth {
|
|||
IntranetUserCSS => C4::Context->preference("IntranetUserCSS"),
|
||||
IntranetUserJS => C4::Context->preference("IntranetUserJS"),
|
||||
IndependentBranches => C4::Context->preference("IndependentBranches"),
|
||||
StaffLoginRestrictBranchByIP => C4::Context->preference("StaffLoginRestrictBranchByIP"),
|
||||
StaffLoginRestrictLibraryByIP => C4::Context->preference("StaffLoginRestrictLibraryByIP"),
|
||||
wrongip => $info{'wrongip'},
|
||||
PatronSelfRegistration => C4::Context->preference("PatronSelfRegistration"),
|
||||
PatronSelfRegistrationDefaultCategory => C4::Context->preference("PatronSelfRegistrationDefaultCategory"),
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ sub _shared_preferences {
|
|||
noItemTypeImages
|
||||
OpacNoItemTypeImages
|
||||
virtualshelves
|
||||
StaffLoginRestrictBranchByIP
|
||||
StaffLoginRestrictLibraryByIP
|
||||
IndependentBranches
|
||||
SessionStorage
|
||||
Persona
|
||||
|
|
|
|||
|
|
@ -3,16 +3,18 @@ use Koha::Installer::Output qw(say_warning say_failure say_success say_info);
|
|||
|
||||
return {
|
||||
bug_number => "26176",
|
||||
description => "Rename AutoLocation to StaffLoginRestrictBranchByIP",
|
||||
description => "Rename AutoLocation to StaffLoginRestrictLibraryByIP",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
||||
|
||||
$dbh->do(q{
|
||||
UPDATE systempreferences SET variable = "StaffLoginRestrictBranchByIP"
|
||||
$dbh->do(
|
||||
q{
|
||||
UPDATE systempreferences SET variable = "StaffLoginRestrictLibraryByIP"
|
||||
WHERE variable = "AutoLocation"
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
say $out "Renamed system preference 'AutoLocation' to 'StaffLoginRestrictBranchByIP'";
|
||||
say $out "Renamed system preference 'AutoLocation' to 'StaffLoginRestrictLibraryByIP'";
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -724,7 +724,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
|
|||
('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', '1','', 'Set the logged in library for the user based on their current IP','YesNo'),
|
||||
('StaffLoginRestrictBranchByIP','0',NULL,'If ON, IP authentication is enabled, blocking access to the staff interface from unauthorized IP addresses based on branch','YesNo'),
|
||||
('StaffLoginRestrictLibraryByIP','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'),
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@
|
|||
[% SET is_superlibrarian = CAN_user_superlibrarian ? 'is_superlibrarian' : '' %]
|
||||
<span class="loggedinusername [% is_superlibrarian | html %]">[% logged_in_user.userid | html %]</span>
|
||||
<span class="loggedincategorycode content_hidden">[% logged_in_user.categorycode | html %]</span>
|
||||
[% IF ( StaffLoginRestrictBranchByIP ) %]
|
||||
[% IF ( StaffLoginRestrictLibraryByIP ) %]
|
||||
<brand>
|
||||
[% Branches.GetLoggedInBranchname | html %]
|
||||
</brand>
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
<span class="loggedinusername">[% logged_in_user.userid | html %]</span>
|
||||
</li>
|
||||
<li class="loggedin-menu-label">
|
||||
[% IF ( StaffLoginRestrictBranchByIP ) %]
|
||||
[% IF ( StaffLoginRestrictLibraryByIP ) %]
|
||||
<brand>
|
||||
[% Branches.GetLoggedInBranchname | html %]
|
||||
</brand>
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ Administration:
|
|||
- Adding d will specify it in days, e.g. 1d is timeout of one day.
|
||||
-
|
||||
- "Limit the libraries staff can select at login to those where their computer's IP address is within the library's specified range or to libraries without an IP restriction: "
|
||||
- pref: StaffLoginRestrictBranchByIP
|
||||
- pref: StaffLoginRestrictLibraryByIP
|
||||
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 <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=StaffLoginRestrictBranchByIP">StaffLoginRestrictBranchByIP</a> system preference. In the event of multiple branches with matching IPs, branchcode (alphabetically) will be the tie breaker.'
|
||||
- 'This setting will be overridden by <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=StaffLoginRestrictLibraryByIP">StaffLoginRestrictLibraryByIP</a> 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: "
|
||||
|
|
|
|||
|
|
@ -1298,8 +1298,8 @@ subtest 'StaffLoginBranchBasedOnIP' => sub {
|
|||
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 0 );
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginBranchBasedOnIP', 0 );
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictLibraryByIP', 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 " );
|
||||
|
||||
# StaffLoginRestrictBranchByIP overrides StaffLoginBranchBasedOnIP
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 1 );
|
||||
# StaffLoginRestrictLibraryByIP overrides StaffLoginBranchBasedOnIP
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictLibraryByIP', 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,
|
||||
"StaffLoginRestrictBranchByIP prevents StaffLoginBranchBasedOnIP from logging user in to another branch"
|
||||
"StaffLoginRestrictLibraryByIP prevents StaffLoginBranchBasedOnIP from logging user in to another branch"
|
||||
);
|
||||
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 0 );
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictLibraryByIP', 0 );
|
||||
my $other_branch = $builder->build_object(
|
||||
{
|
||||
class => 'Koha::Libraries',
|
||||
|
|
@ -1357,13 +1357,13 @@ subtest 'StaffLoginBranchBasedOnIP' => sub {
|
|||
|
||||
};
|
||||
|
||||
subtest 'StaffLoginRestrictBranchByIP' => sub {
|
||||
subtest 'StaffLoginRestrictLibraryByIP' => sub {
|
||||
|
||||
plan tests => 12;
|
||||
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 0 );
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictLibraryByIP', 0 );
|
||||
|
||||
my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { flags => 1 } } );
|
||||
my $password = 'password';
|
||||
|
|
@ -1381,12 +1381,12 @@ subtest 'StaffLoginRestrictBranchByIP' => 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 StaffLoginRestrictBranchByIP" );
|
||||
is( $userid, $patron->userid, "Standard login without StaffLoginRestrictLibraryByIP" );
|
||||
|
||||
my $template;
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictBranchByIP', 1 );
|
||||
t::lib::Mocks::mock_preference( 'StaffLoginRestrictLibraryByIP', 1 );
|
||||
|
||||
# StaffLoginRestrictBranchByIP: "Require staff to log in from a computer in the IP address range specified by their library (if any)"
|
||||
# StaffLoginRestrictLibraryByIP: "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' );
|
||||
|
|
@ -1423,7 +1423,7 @@ subtest 'StaffLoginRestrictBranchByIP' => sub {
|
|||
$session = C4::Auth::get_session($sessionID);
|
||||
is(
|
||||
$session->param('branch'), $other_library->branchcode,
|
||||
"StaffLoginRestrictBranchByIP allows specifying a branch as long as the IP matches"
|
||||
"StaffLoginRestrictLibraryByIP allows specifying a branch as long as the IP matches"
|
||||
);
|
||||
|
||||
$other_library->branchip('129.0.0.1')->store;
|
||||
|
|
|
|||
Loading…
Reference in New Issue