Bug 12080: restore effect of superserials permission

The superserials permission is meant to allow an operator
to see all subscriptions regardless of branch when IndependentBranches
is on without having to have full superlibrarian permissions.  This
patch restores this behavior.

TEST PLAN
---------
1) Apply the patch for bug 12048 (as needed -- it may be pushed)
2) Ensure you have two users: superlibrarian, non-superlibrarian
   with all access to the staff client except superserials.
3) Ensure you have serials belonging to a different branch than
   the non-superlibrarian.
3) Log into staff client as superlibrarian
4) Click 'Serials'
5) Click the 'Submit' button in the search area.
   -- note the number of results.
6) Log into staff client as non-superlibrarian
7) Click 'Serials'
8) Click the 'Submit' button in the search area.
   -- note the number should be less, note the number.
9) Give the non-superlibrarian superserials access.
10) Home -> Serials
11) Click the 'Submit' button in the search area.
   -- the number will still be the same at the one in step #8.
12) Apply the patch
13) Refresh the page
   -- the number should now match the one in step #5.

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
Frédéric Demians 2014-04-15 10:10:07 +02:00 committed by Galen Charlton
parent 214d6b8d13
commit f0e574be4a

View file

@ -736,12 +736,20 @@ sub SearchSubscriptions {
my $results = $sth->fetchall_arrayref( {} );
$sth->finish;
my $cant_display_other_branches = 0;
if (my $env = C4::Context->userenv) {
my $userid = $env->{'id'};
$cant_display_other_branches =
C4::Context->preference('IndependentBranches') &&
!C4::Context->IsSuperLibrarian() &&
!C4::Auth::haspermission( $userid, {serials => 'superserials'});
}
my $user_branch = C4::Context->userenv->{'branch'};
for my $subscription ( @$results ) {
$subscription->{cannotedit} = not can_edit_subscription( $subscription );
$subscription->{cannotdisplay} =
( C4::Context->preference("IndependentBranches") &&
(!C4::Context->IsSuperLibrarian()) &&
$subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0;
$cant_display_other_branches &&
$subscription->{branchcode} ne $user_branch;
}
return @$results;