8000 [WebProfilerBundle] Imply forward request by a new X-Previous-Debug-T… · symfony/symfony@07dd09d · GitHub
[go: up one dir, main page]

Skip to content

Commit 07dd09d

Browse files
ro0NLfabpot
authored andcommitted
[WebProfilerBundle] Imply forward request by a new X-Previous-Debug-Token header
1 parent 65b2bcd commit 07dd09d

File tree

13 files changed

+52
-72
lines changed

13 files changed

+52
-72
lines changed

UPGRADE-4.1.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ FrameworkBundle
1616
---------------
1717

1818
* A `RouterInterface` that does not implement the `WarmableInterface` is deprecated and will not be supported in Symfony 5.0.
19+
* The `RequestDataCollector` class has been deprecated and will be removed in Symfony 5.0. Use the `Symfony\Component\HttpKernel\DataCollector\RequestDataCollector` class instead.
1920

2021
HttpFoundation
2122
--------------

UPGRADE-5.0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ FrameworkBundle
1515
---------------
1616

1717
* Using a `RouterInterface` that does not implement the `WarmableInterface` is not supported anymore.
18+
* The `RequestDataCollector` class has been removed. Use the `Symfony\Component\HttpKernel\DataCollector\RequestDataCollector` class instead.
1819

1920
HttpFoundation
2021
--------------

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ CHANGELOG
99
* Allowed the `Router` to work with any PSR-11 container
1010
* Added option in workflow dump command to label graph with a custom label
1111
* Using a `RouterInterface` that does not implement the `WarmableInterface` is deprecated and will n 3419 ot be supported in Symfony 5.0.
12-
12+
* The `RequestDataCollector` class has been deprecated and will be removed in Symfony 5.0. Use the `Symfony\Component\HttpKernel\DataCollector\RequestDataCollector` class instead.
13+
1314
4.0.0
1415
-----
1516

src/Symfony/Bundle/FrameworkBundle/Controller/ControllerTrait.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ protected function generateUrl(string $route, array $parameters = array(), int $
8383
protected function forward(string $controller, array $path = array(), array $query = array()): Response
8484
{
8585
$request = $this->container->get('request_stack')->getCurrentRequest();
86-
$path['_forwarded'] = $request->attributes;
8786
$path['_controller'] = $controller;
8887
$subRequest = $request->duplicate($query, null, $path);
8988

src/Symfony/Bundle/FrameworkBundle/DataCollector/RequestDataCollector.php

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -11,67 +11,17 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\DataCollector;
1313

14-
use Symfony\Component\HttpFoundation\ParameterBag;
15-
use Symfony\Component\HttpFoundation\Request;
16-
use Symfony\Component\HttpFoundation\Response;
17-
use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector as BaseRequestCollector;
18-
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
19-
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
14+
use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector as BaseRequestDataCollector;
15+
16+
@trigger_error(sprintf('The "%s" class is deprecated since version 4.1 and will be removed in Symfony 5.0. Use %s instead.', RequestDataCollector::class, BaseRequestDataCollector::class), E_USER_DEPRECATED);
2017

2118
/**
2219
* RequestDataCollector.
2320
*
2421
* @author Jules Pietri <jusles@heahprod.com>
22+
*
23+
* @deprecated since version 4.1, to be removed in Symfony 5.0
2524
*/
26-
class RequestDataCollector extends BaseRequestCollector implements EventSubscriberInterface
25+
class RequestDataCollector extends BaseRequestDataCollector
2726
{
28-
/**
29-
* {@inheritdoc}
30-
*/
31-
public function collect(Request $request, Response $response, \Exception $exception = null)
32-
{
33-
parent::collect($request, $response, $exception);
34-
35-
if ($parentRequestAttributes = $request->attributes->get('_forwarded')) {
36-
if ($parentRequestAttributes instanceof ParameterBag) {
37-
$parentRequestAttributes->set('_forward_token', $response->headers->get('x-debug-token'));
38-
}
39-
}
40-
if ($request->attributes->has('_forward_controller')) {
41-
$this->data['forward'] = array(
42-
'token' => $request->attributes->get('_forward_token'),
43-
'controller' => $this->parseController($request->attributes->get('_forward_controller')),
44-
);
45-
}
46-
}
47-
48-
/**
49-
* Gets the parsed forward controller.
50-
*
51-
* @return array|bool An array with keys 'token' the forward profile token, and
52-
* 'controller' the parsed forward controller, false otherwise
53-
*/
54-
public function getForward()
55-
{
56-
return isset($this->data['forward']) ? $this->data['forward'] : false;
57-
}
58-
59-
public function onKernelController(FilterControllerEvent $event)
60-
{
61-
$this->controllers[$event->getRequest()] = $event->getController();
62-
63-
if ($parentRequestAttributes = $event->getRequest()->attributes->get('_forwarded')) {
64-
if ($parentRequestAttributes instanceof ParameterBag) {
65-
$parentRequestAttributes->set('_forward_controller', $event->getController());
66-
}
67-
}
68-
}
69-
70-
/**
71-
* {@inheritdoc}
72-
*/
73-
public function getName()
74-
{
75-
return 'request';
76-
}
7727
}

src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<call method="setKernel"><argument type="service" id="kernel" on-invalid="ignore" /></call>
1313
</service>
1414

15-
<service id="data_collector.request" class="Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector">
15+
<service id="data_collector.request" class="Symfony\Component\HttpKernel\DataCollector\RequestDataCollector">
1616
<tag name="kernel.event_subscriber" />
1717
<tag name="data_collector" template="@WebProfiler/Collector/request.html.twig" id="request" priority="335" />
1818
</service>

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Controller/SubRequestServiceResolutionController.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class SubRequestServiceResolutionController implements ContainerAwareInterface
2424
public function indexAction()
2525
{
2626
$request = $this->container->get('request_stack')->getCurrentRequest();
27-
$path['_forwarded'] = $request->attributes;
2827
$path['_controller'] = 'TestBundle:SubRequestServiceResolution:fragment';
2928
$subRequest = $request->duplicate(array(), null, $path);
3029

src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
{% endset %}
1313
{% endif %}
1414

15-
{% if collector.forward|default(false) %}
15+
{% if collector.forwardtoken %}
16+
{% set forward_profile = profile.childByToken(collector.forwardtoken) %}
1617
{% set forward_handler %}
17-
{{ helper.set_handler(collector.forward.controller) }}
18+
{{ helper.set_handler(forward_profile ? forward_profile.collector('request').controller : 'n/a') }}
1819
{% endset %}
1920
{% endif %}
2021

@@ -24,7 +25,7 @@
2425
<span class="sf-toolbar-status sf-toolbar-status-{{ request_status_code_color }}">{{ collector.statuscode }}</span>
2526
{% if collector.route %}
2627
{% if collector.redirect %}{{ include('@WebProfiler/Icon/redirect.svg') }}{% endif %}
27-
{% if collector.forward|default(false) %}{{ include('@WebProfiler/Icon/forward.svg') }}{% endif %}
28+
{% if collector.forwardtoken %}{{ include('@WebProfiler/Icon/forward.svg') }}{% endif %}
2829
<span class="sf-toolbar-label">{{ 'GET' != collector.method ? collector.method }} @</span>
2930
<span class="sf-toolbar-value sf-toolbar-info-piece-additional">{{ collector.route }}</span>
3031
{% endif %}
@@ -81,7 +82,7 @@
8182
<b>Forwarded to</b>
8283
<span>
8384
{{ forward_handler }}
84-
(<a href="{{ path('_profiler', { token: collector.forward.token }) }}">{{ collector.forward.token }}</a>)
85+
(<a href="{{ path('_profiler', { token: collector.forwardtoken }) }}">{{ collector.forwardtoken }}</a>)
8586
</span>
8687
</div>
8788
</div>

src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/layout.html.twig

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,22 @@
4444
</dl>
4545
{%- endif %}
4646

47-
{% if request_collector and request_collector.forward|default(false) and request_collector.forward.controller.class is defined -%}
48-
{%- set forward = request_collector.forward -%}
49-
{%- set controller = forward.controller -%}
47+
{% if request_collector and request_collector.forwardtoken -%}
48+
{% set forward_profile = profile.childByToken(request_collector.forwardtoken) %}
49+
{% set controller = forward_profile ? forward_profile.collector('request').controller : 'n/a' %}
5050
<dl class="metadata">
5151
<dt>Forwarded to</dt>
5252
<dd>
53-
{% set link = controller.file|file_link(controller.line) -%}
53+
{% set link = controller.file is defined ? controller.file|file_link(controller.line) : null -%}
5454
{%- if link %}<a href="{{ link }}" title="{{ controller.file }}">{% endif -%}
55-
{{- controller.class|abbr_class|striptags -}}
56-
{{- controller.method ? ' :: ' ~ controller.method }}
55+
{% if controller.class is defined %}
56+
{{- controller.class|abbr_class|striptags -}}
57+
{{- controller.method ? ' :: ' ~ controller.method -}}
58+
{% else %}
59+
{{- controller -}}
60+
{% endif %}
5761
{%- if link %}</a>{% endif %}
58-
(<a href="{{ path('_profiler', { token: forward.token }) }}">{{ forward.token }}</a>)
62+
(<a href="{{ path('_profiler', { token: request_collector.forwardtoken }) }}">{{ request_collector.forwardtoken }}</a>)
5963
</dd>
6064
</dl>
6165
{%- endif %}

src/Symfony/Bundle/WebProfilerBundle/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
],
1818
"require": {
1919
"php": "^7.1.3",
20-
"symfony/http-kernel": "~3.4|~4.0",
20+
"symfony/http-kernel": "~4.1",
2121
"symfony/routing": "~3.4|~4.0",
2222
"symfony/twig-bridge": "~3.4|~4.0",
2323
"symfony/var-dumper": "~3.4|~4.0",

0 commit comments

Comments
 (0)
0