Skip to content

Commit c9bbc66

Browse files
committed
bug symfony#28565 [HttpFoundation][Security] forward locale and format to subrequests (nicolas-grekas)
This PR was merged into the 2.8 branch. Discussion ---------- [HttpFoundation][Security] forward locale and format to subrequests | Q | A | ------------- | --- | Branch? | 2.8 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | symfony#28368, symfony#21546 | License | MIT | Doc PR | - See discussion in linked issue. Commits ------- 41eb191 [HttpFoundation][Security] forward locale and format to subrequests
2 parents f7f0486 + 41eb191 commit c9bbc66

File tree

4 files changed

+35
-1
lines changed

4 files changed

+35
-1
lines changed

src/Symfony/Component/HttpFoundation/Request.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1367,7 +1367,7 @@ public function setFormat($format, $mimeTypes)
13671367
* * _format request parameter
13681368
* * $default
13691369
*
1370-
* @param string $default The default format
1370+
* @param string|null $default The default format
13711371
*
13721372
* @return string The request format
13731373
*/

src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,13 @@ protected function createSubRequest($uri, Request $request)
122122
$subRequest->setSession($session);
123123
}
124124

125+
if ($request->get('_format')) {
126+
$subRequest->attributes->set('_format', $request->get('_format'));
127+
}
128+
if ($request->getDefaultLocale() !== $request->getLocale()) {
129+
$subRequest->setLocale($request->getLocale());
130+
}
131+
125132
return $subRequest;
126133
}
127134

src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,26 @@ public function testExceptionInSubRequestsDoesNotMangleOutputBuffers()
175175
$this->assertEquals('Foo', ob_get_clean());
176176
}
177177

178+
public function testLocaleAndFormatAreIsKeptInSubrequest()
179+
{
180+
$expectedSubRequest = Request::create('/');
181+
$expectedSubRequest->attributes->set('_format', 'foo');
182+
$expectedSubRequest->setLocale('fr');
183+
if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) {
184+
$expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
185+
$expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
186+
}
187+
$expectedSubRequest->headers->set('forwarded', array('for="127.0.0.1";host="localhost";proto=http'));
188+
$expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
189+
190+
$strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
191+
192+
$request = Request::create('/');
193+
$request->attributes->set('_format', 'foo');
194+
$request->setLocale('fr');
195+
$strategy->render('/', $request);
196+
}
197+
178198
public function testESIHeaderIsKeptInSubrequest()
179199
{
180200
$expectedSubRequest = Request::create('/');

src/Symfony/Component/Security/Http/HttpUtils.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ public function createRequest(Request $request, $path)
9191
$newRequest->attributes->set(Security::LAST_USERNAME, $request->attributes->get(Security::LAST_USERNAME));
9292
}
9393

94+
if ($request->get('_format')) {
95+
$newRequest->attributes->set('_format', $request->get('_format'));
96+
}
97+
if ($request->getDefaultLocale() !== $request->getLocale()) {
98+
$newRequest->setLocale($request->getLocale());
99+
}
100+
94101
return $newRequest;
95102
}
96103

0 commit comments

Comments
 (0)