Bug 25327: Do not call authenticate_api_request to render the spec
authorTomas Cohen Arazi <tomascohen@theke.io>
Mon, 4 May 2020 18:43:18 +0000 (15:43 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 11 May 2020 09:02:29 +0000 (10:02 +0100)
The original code for Koha::REST::V1::Auth::under called
authenticate_api_request when requesting the API spec. This didn't make
sense, and recent changes on what conditions are tested for public
routes, broke the route.

We could add another condition, but it really doesn't make sense to call
authenticate_api_request if it should be publicly available in any
configuration, as discussed on the bug.

This patch adds a trivial check and the requested route, and lets the
request through in any case in 'under'.

To test:
1. Point your browser to:
   http://kohadev.myDNSname.org:8080/api/v1/
   http://kohadev.myDNSname.org:8080/api/v1/.html
=> FAIL: In both cases you get an authorization error.
2. Apply the regression tests patch
3. Run:
   $ kshell
  k$ prove t/db_dependent/api/v1/auth.t
=> FAIL: The tests reflect the situation, and fail
4. Apply this patch
5. Repeat 1 and 3
=> SUCCESS: All good!
6. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/REST/V1/Auth.pm

index 884fd99..b34397b 100644 (file)
@@ -76,6 +76,9 @@ sub under {
             # Requesting a token shouldn't go through the API authenticaction chain
             $status = 1;
         }
+        elsif ( $namespace eq '' or $namespace eq '.html' ) {
+            $status = 1;
+        }
         else {
             $status = authenticate_api_request($c, { is_public => $is_public });
         }