@@ -, +, @@ -MAIN log in ( auth.tt ) -AFTER log in- -CircSideBar- -Set library page- --- C4/Auth.pm | 3 ++- circ/set-library.pl | 4 ++-- .../atomicupdate/bug_30624_add_userflag.pl | 20 +++++++++++++++++++ installer/data/mysql/mandatory/userflags.sql | 3 ++- .../prog/en/includes/circ-nav.inc | 7 +++++-- .../intranet-tmpl/prog/en/includes/header.inc | 2 +- .../prog/en/includes/permissions.inc | 3 +++ .../prog/en/modules/circ/circulation-home.tt | 6 +++++- .../prog/en/modules/circ/set-library.tt | 2 +- 9 files changed, 41 insertions(+), 9 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_30624_add_userflag.pl --- a/C4/Auth.pm +++ a/C4/Auth.pm @@ -1154,7 +1154,8 @@ sub checkauth { my $ip = $ENV{'REMOTE_ADDR'}; # if they specify at login, use that - if ( $query->param('branch') ) { + my $patron = Koha::Patrons->find({userid => $userid}); + if ( $query->param('branch') && ( haspermission($userid, { 'loggedinlibrary'=> 1 }) || $patron->is_superlibrarian ) ) { $branchcode = $query->param('branch'); my $library = Koha::Libraries->find($branchcode); $branchname = $library? $library->branchname: ''; --- a/circ/set-library.pl +++ a/circ/set-library.pl @@ -49,8 +49,8 @@ my $userenv_register_id = C4::Context->userenv->{'register_id'} || ''; my @updated; # $session lines here are doing the updating -if ( $branch and my $library = Koha::Libraries->find($branch) ) { - if (! $userenv_branch or $userenv_branch ne $branch ) { +if ( $branch and my $library = Koha::Libraries->find($branch) and ( $flags->{loggedinlibrary} == 1 or $flags->{superlibrarian} == 1 ) ) { + if ( !$userenv_branch or $userenv_branch ne $branch ) { my $branchname = $library->branchname; $session->param('branchname', $branchname); # update sesssion in DB $session->param('branch', $branch); # update sesssion in DB --- a/installer/data/mysql/atomicupdate/bug_30624_add_userflag.pl +++ a/installer/data/mysql/atomicupdate/bug_30624_add_userflag.pl @@ -0,0 +1,20 @@ +use Modern::Perl; + +return { + bug_number => "30624", + description => "Add loggedinlibrary permission", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + $dbh->do(q{ + INSERT IGNORE INTO userflags (bit, flag, flagdesc, defaulton) VALUES (29, 'loggedinlibrary', 'Allow staff to change logged in library', 0) + }); + + my $IndependentBranches = C4::Context->preference('IndependentBranches'); + unless ( $IndependentBranches ) { + $dbh->do(q{ + UPDATE borrowers SET flags = flags + (1<<29) WHERE flags & 4; + }); + } + }, +}; --- a/installer/data/mysql/mandatory/userflags.sql +++ a/installer/data/mysql/mandatory/userflags.sql @@ -25,5 +25,6 @@ INSERT INTO userflags (bit, flag, flagdesc, defaulton) VALUES (25, 'cash_management', 'Cash management', 0), (26, 'problem_reports', 'Manage problem reports', 0), (27, 'recalls', 'Recalls', 0), -(28, 'erm', 'Manage electronic resources', 0) +(28, 'erm', 'Manage electronic resources', 0), +(29, 'loggedinlibrary', 'Change logged in library', 0) ; --- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-nav.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-nav.inc @@ -2,7 +2,6 @@ [% USE Branches %]