Bug 24964: [19.11.x] Do not filter patrons after they have been fetched
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 25 Mar 2020 10:21:15 +0000 (11:21 +0100)
committerLucas Gass <lucas@bywatersolutions.com>
Mon, 11 May 2020 20:59:25 +0000 (20:59 +0000)
commit6cb9931864bcd17d216ec5de39ea11ac7c2a096e
tree95ea7670c7ad9cd3d20377d8961958bd4b74100a
parentda20e30b9ce059667ac208b5b2cb80a321cf3cc9
Bug 24964: [19.11.x] Do not filter patrons after they have been fetched

The svc/members/search script is called in different places.
In some places (Set owner for a fund, add users to a fund, or set a
manager to a suggestion), we need patrons to be filtered depending on
the permissions they have.
For instance you can only set a fund's owner with a patron that has
acquisition.order_manage.

Currently we have fetching X (default 20) patrons, then filter them
depending on their permission.
Says you have 3 patrons that have the correct permissions but are not in
the 20 first patrons, if you do not define a search term, the search
result will be empty.

This is not ideal and we should filter when requesting the DB.

Test plan:
- Have more than 20 patrons, remove them their permissions
- Create 3 more:
1 superlibrarian
1 with the full acq permission
1 with acquisition.order_manage
- Create a fund and set a owner
- Search for patrons, without specifying a search term (to get them all)
=> Without this patch the new patrons you created are not displayed
=> With this patch they are!

Same test plan apply to set a manager to a suggestion (freshly pushed,
see bug 23590), with suggestions and suggestions.suggestions_manage

Note: The code has been written that way to rely on
C4::Auth::haspermission, but the SQL query is quite trivial and the gain
is important.

Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Joy Nelson <joy@bywatersolutions.com>
(cherry picked from commit 62b6e283a2c72d5e8c7f7f9a048df44fba2de8c3)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
C4/Utils/DataTables/Members.pm
svc/members/search