@@ -, +, @@ --- Koha/REST/Plugin/Query.pm | 34 ++++++++-------------------------- Koha/REST/V1/Auth.pm | 2 +- 2 files changed, 9 insertions(+), 27 deletions(-) --- a/Koha/REST/Plugin/Query.pm +++ a/Koha/REST/Plugin/Query.pm @@ -144,9 +144,9 @@ Generates the DBIC prefetch attribute based on embedded relations, and merges in my ( $c, $args ) = @_; my $attributes = $args->{attributes}; my $result_set = $args->{result_set}; - my $embed = $c->stash('koha.embed'); - - return unless defined $embed; + my $embed = defined($c->stash('koha.embed')) ? $c->stash('koha.embed') : $c->stash_embed; + + return unless $embed; my @prefetches; foreach my $key (sort keys(%{$embed})) { @@ -229,41 +229,23 @@ Merges parameters from $q_params into $filtered_params. =head3 stash_embed - $c->stash_embed( $c->match->endpoint->pattern->defaults->{'openapi.op_spec'} ); + $c->stash_embed( ); =cut $app->helper( 'stash_embed' => sub { - my ( $c, $args ) = @_; - - my $spec = $args->{spec} // {}; - - my $embed_spec; - for my $param (@{$spec->{parameters}}) { - next unless $param->{name} eq 'x-koha-embed'; - $embed_spec = $param->{items}->{enum}; - } + my ( $c ) = @_; my $embed_header = $c->req->headers->header('x-koha-embed'); - - Koha::Exceptions::BadParameter->throw("Embedding objects is not allowed on this endpoint.") - if $embed_header and !defined $embed_spec; - - if ( $embed_header ) { + if ($embed_header) { my $THE_embed = {}; foreach my $embed_req ( split /\s*,\s*/, $embed_header ) { - my $matches = grep {lc $_ eq lc $embed_req} @{ $embed_spec }; - - Koha::Exceptions::BadParameter->throw( - error => 'Embeding '.$embed_req. ' is not authorised. Check your x-koha-embed headers or remove it.' - ) unless $matches; - - _merge_embed( _parse_embed($embed_req), $THE_embed); + _merge_embed( _parse_embed($embed_req), $THE_embed ); } $c->stash( 'koha.embed' => $THE_embed ) - if $THE_embed; + if $THE_embed; } return $c; --- a/Koha/REST/V1/Auth.pm +++ a/Koha/REST/V1/Auth.pm @@ -157,7 +157,7 @@ sub authenticate_api_request { # TODO: remove the latter 'openapi.op_spec' if minimum version is bumped to at least 1.17. my $spec = $c->openapi->spec || $c->match->endpoint->pattern->defaults->{'openapi.op_spec'}; - $c->stash_embed({ spec => $spec }); + $c->stash_embed(); $c->stash_overrides(); my $cookie_auth = 0; --