From 15fcd755a24b07fc959210d2cb812d571bea3faf 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 Signed-off-by: Kyle M Hall Signed-off-by: Marcel de Rooy Signed-off-by: Jonathan Druart --- 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 ee346f6ffe..9020c57a47 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; @@ -169,7 +171,12 @@ sub add { $can_place_hold->{status} = 'tooManyReserves'; } - 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 a578adb252..c71fe1cacf 100644 --- a/api/v1/swagger/paths/holds.json +++ b/api/v1/swagger/paths/holds.json @@ -267,6 +267,9 @@ "permissions": { "reserveforothers": "1" } + }, + "x-koha-override": { + "AllowHoldPolicyOverride": 1 } } }, -- 2.39.5