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)
committerJoy Nelson <joy@bywatersolutions.com>
Wed, 29 Apr 2020 15:57:56 +0000 (15:57 +0000)
commit62b6e283a2c72d5e8c7f7f9a048df44fba2de8c3
treee197b9f4717355b9865ab7e92dd3ea9403e7789c
parentb3d97ce0294bebd89c65830b1851cea5d936f0c4
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>
C4/Utils/DataTables/Members.pm
svc/members/search