From 5d56712660ac8f799069efe0d13d5b2fbbc46cba Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 10 Aug 2020 17:30:25 -0300 Subject: [PATCH] Bug 26181: Disable override by default in /holds This patch disables AllowHoldPolicyOverride by default in /holds. It also adds a header that can be used to request the override explicitly. Tests are added for this behaviour To test: 1. Apply the regression tests patch 2. Run: $ kshell k$ prove t/db_dependent/api/v1/holds.t => FAIL: Tests fail because the behaviour is not implemented 3. Apply this patch 4. Repeat 2 => SUCCESS: Tests pass! 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi --- Koha/REST/V1/Holds.pm | 9 ++++++++- api/v1/swagger/paths/holds.json | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Koha/REST/V1/Holds.pm b/Koha/REST/V1/Holds.pm index 87d7c05336..947a563879 100644 --- a/Koha/REST/V1/Holds.pm +++ b/Koha/REST/V1/Holds.pm @@ -19,6 +19,8 @@ use Modern::Perl; use Mojo::Base 'Mojolicious::Controller'; +use Mojo::JSON qw(decode_json); + use C4::Biblio; use C4::Reserves; @@ -132,7 +134,12 @@ sub add { ? C4::Reserves::CanItemBeReserved( $patron_id, $item_id ) : C4::Reserves::CanBookBeReserved( $patron_id, $biblio_id ); - my $can_override = C4::Context->preference('AllowHoldPolicyOverride'); + my $override_header = $c->req->headers->header('x-koha-override'); + $override_header = decode_json($override_header) + if $override_header; + + my $can_override = $override_header->{AllowHoldPolicyOverride} + and C4::Context->preference('AllowHoldPolicyOverride'); unless ($can_override || $can_place_hold->{status} eq 'OK' ) { return $c->render( diff --git a/api/v1/swagger/paths/holds.json b/api/v1/swagger/paths/holds.json index 847d3b83ca..3ac76d67c4 100644 --- a/api/v1/swagger/paths/holds.json +++ b/api/v1/swagger/paths/holds.json @@ -257,6 +257,9 @@ "permissions": { "reserveforothers": "1" } + }, + "x-koha-override": { + "AllowHoldPolicyOverride": 1 } } }, -- 2.28.0