Skip to content

Commit 5e8a571

Browse files
Joe Bennettalanpoulain
authored andcommitted
moved content negotiation to before firewall
1 parent 3a8329f commit 5e8a571

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

features/filter/filter_validation.feature

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
Feature: Validate filters based upon filter description
22

3+
Background:
4+
Given I add "Accept" header equal to "application/json"
5+
36
@createSchema
47
Scenario: Required filter should not throw an error if set
58
When I am on "/filter_validators?required=foo&required-allow-empty=&arrayRequired[foo]="
@@ -13,7 +16,7 @@ Feature: Validate filters based upon filter description
1316
Scenario: Required filter should throw an error if not set
1417
When I am on "/filter_validators"
1518
Then the response status code should be 400
16-
Then the JSON node "detail" should match '/^Query parameter "required" is required\nQuery parameter "required-allow-empty" is required$/'
19+
And the JSON node "detail" should match '/^Query parameter "required" is required\nQuery parameter "required-allow-empty" is required$/'
1720

1821
Scenario: Required filter should not throw an error if set
1922
When I am on "/array_filter_validators?arrayRequired[]=foo&indexedArrayRequired[foo]=foo"

src/Bridge/Symfony/Bundle/Resources/config/api.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,15 +150,15 @@
150150

151151
<!-- Event listeners -->
152152

153-
<!-- kernel.request priority must be < 8 to be executed after the Firewall -->
154153
<service id="api_platform.listener.request.add_format" class="ApiPlatform\Core\EventListener\AddFormatListener">
155154
<argument type="service" id="api_platform.negotiator" />
156155
<argument type="service" id="api_platform.metadata.resource.metadata_factory" />
157156
<argument>%api_platform.formats%</argument>
158157

159-
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" priority="7" />
158+
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" priority="28" />
160159
</service>
161160

161+
<!-- kernel.request priority must be < 8 to be executed after the Firewall -->
162162
<service id="api_platform.listener.request.read" class="ApiPlatform\Core\EventListener\ReadListener">
163163
<argument type="service" id="api_platform.collection_data_provider" />
164164
<argument type="service" id="api_platform.item_data_provider" />

src/EventListener/AddFormatListener.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ public function __construct(Negotiator $negotiator, $resourceMetadataFactory, ar
6565
public function onKernelRequest(RequestEvent $event): void
6666
{
6767
$request = $event->getRequest();
68-
if (
69-
!($request->attributes->has('_api_resource_class')
70-
|| $request->attributes->getBoolean('_api_respond', false)
71-
|| $request->attributes->getBoolean('_graphql', false))
72-
) {
68+
if (!(
69+
$request->attributes->has('_api_resource_class')
70+
|| $request->attributes->getBoolean('_api_respond', false)
71+
|| $request->attributes->getBoolean('_graphql', false)
72+
)) {
7373
return;
7474
}
7575

0 commit comments

Comments
 (0)