From 45f1a5ee06669eccdccead73553183aa3b6de74f Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Wed, 30 Oct 2019 22:35:27 -0400 Subject: [PATCH] Show generic message in non-debug mode --- .../Tests/Functional/JsonLoginTest.php | 2 +- .../ErrorRenderer/JsonErrorRenderer.php | 8 +++++++- .../ErrorRenderer/ErrorRenderer/TxtErrorRenderer.php | 12 +++++++++--- .../ErrorRenderer/ErrorRenderer/XmlErrorRenderer.php | 10 ++++++---- .../ErrorRenderer/Tests/Command/DebugCommandTest.php | 3 ++- .../Tests/ErrorRenderer/JsonErrorRendererTest.php | 3 ++- .../Tests/ErrorRenderer/TxtErrorRendererTest.php | 1 + .../Tests/ErrorRenderer/XmlErrorRendererTest.php | 2 +- .../Tests/Controller/ErrorControllerTest.php | 6 +++--- 9 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/JsonLoginTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/JsonLoginTest.php index e5dd7c18ed..4fbdb27c65 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/JsonLoginTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/JsonLoginTest.php @@ -70,6 +70,6 @@ class JsonLoginTest extends AbstractWebTestCase $this->assertSame(400, $response->getStatusCode()); $this->assertSame('application/json', $response->headers->get('Content-Type')); - $this->assertSame(['title' => 'Bad Request', 'status' => 400], json_decode($response->getContent(), true)); + $this->assertSame(['title' => 'Bad Request', 'status' => 400, 'detail' => 'Whoops, looks like something went wrong.'], json_decode($response->getContent(), true)); } } diff --git a/src/Symfony/Component/ErrorRenderer/ErrorRenderer/JsonErrorRenderer.php b/src/Symfony/Component/ErrorRenderer/ErrorRenderer/JsonErrorRenderer.php index 46e3c28c1a..d708fb0f15 100644 --- a/src/Symfony/Component/ErrorRenderer/ErrorRenderer/JsonErrorRenderer.php +++ b/src/Symfony/Component/ErrorRenderer/ErrorRenderer/JsonErrorRenderer.php @@ -40,12 +40,18 @@ class JsonErrorRenderer implements ErrorRendererInterface { $debug = $this->debug && ($exception->getHeaders()['X-Debug'] ?? true); + if ($debug) { + $message = $exception->getMessage(); + } else { + $message = 404 === $exception->getStatusCode() ? 'Sorry, the page you are looking for could not be found.' : 'Whoops, looks like something went wrong.'; + } + $content = [ 'title' => $exception->getTitle(), 'status' => $exception->getStatusCode(), + 'detail' => $message, ]; if ($debug) { - $content['detail'] = $exception->getMessage(); $content['exceptions'] = $exception->toArray(); } diff --git a/src/Symfony/Component/ErrorRenderer/ErrorRenderer/TxtErrorRenderer.php b/src/Symfony/Component/ErrorRenderer/ErrorRenderer/TxtErrorRenderer.php index f5588605ea..2bafb2cfb4 100644 --- a/src/Symfony/Component/ErrorRenderer/ErrorRenderer/TxtErrorRenderer.php +++ b/src/Symfony/Component/ErrorRenderer/ErrorRenderer/TxtErrorRenderer.php @@ -39,12 +39,18 @@ class TxtErrorRenderer implements ErrorRendererInterface public function render(FlattenException $exception): string { $debug = $this->debug && ($exception->getHeaders()['X-Debug'] ?? true); - $content = sprintf("[title] %s\n", $exception->getTitle()); - $content .= sprintf("[status] %s\n", $exception->getStatusCode()); if ($debug) { - $content .= sprintf("[detail] %s\n", $exception->getMessage()); + $message = $exception->getMessage(); + } else { + $message = 404 === $exception->getStatusCode() ? 'Sorry, the page you are looking for could not be found.' : 'Whoops, looks like something went wrong.'; + } + $content = sprintf("[title] %s\n", $exception->getTitle()); + $content .= sprintf("[status] %s\n", $exception->getStatusCode()); + $content .= sprintf("[detail] %s\n", $message); + + if ($debug) { foreach ($exception->toArray() as $i => $e) { $content .= sprintf("[%d] %s: %s\n", $i + 1, $e['class'], $e['message']); foreach ($e['trace'] as $trace) { diff --git a/src/Symfony/Component/ErrorRenderer/ErrorRenderer/XmlErrorRenderer.php b/src/Symfony/Component/ErrorRenderer/ErrorRenderer/XmlErrorRenderer.php index 4a67898920..290e0a63ff 100644 --- a/src/Symfony/Component/ErrorRenderer/ErrorRenderer/XmlErrorRenderer.php +++ b/src/Symfony/Component/ErrorRenderer/ErrorRenderer/XmlErrorRenderer.php @@ -42,14 +42,16 @@ class XmlErrorRenderer implements ErrorRendererInterface { $debug = $this->debug && ($exception->getHeaders()['X-Debug'] ?? true); $title = $this->escapeXml($exception->getTitle()); + if ($debug) { + $message = $this->escapeXml($exception->getMessage()); + } else { + $message = 404 === $exception->getStatusCode() ? 'Sorry, the page you are looking for could not be found.' : 'Whoops, looks like something went wrong.'; + } $statusCode = $this->escapeXml($exception->getStatusCode()); $charset = $this->escapeXml($this->charset); $exceptions = ''; - $message = ''; if ($debug) { - $message = ''.$this->escapeXml($exception->getMessage()).''; - $exceptions .= ''; foreach ($exception->toArray() as $e) { $exceptions .= sprintf('', $e['class'], $this->escapeXml($e['message'])); @@ -73,7 +75,7 @@ class XmlErrorRenderer implements ErrorRendererInterface {$title} {$statusCode} - {$message} + {$message} {$exceptions} EOF; diff --git a/src/Symfony/Component/ErrorRenderer/Tests/Command/DebugCommandTest.php b/src/Symfony/Component/ErrorRenderer/Tests/Command/DebugCommandTest.php index 6c0a1f9996..c5a9768c8b 100644 --- a/src/Symfony/Component/ErrorRenderer/Tests/Command/DebugCommandTest.php +++ b/src/Symfony/Component/ErrorRenderer/Tests/Command/DebugCommandTest.php @@ -56,7 +56,8 @@ TXT $this->assertSame(<<render() returns the TXT content WITH stack traces in debug mode' => [ diff --git a/src/Symfony/Component/ErrorRenderer/Tests/ErrorRenderer/XmlErrorRendererTest.php b/src/Symfony/Component/ErrorRenderer/Tests/ErrorRenderer/XmlErrorRendererTest.php index b79fd81d06..3a756720ec 100644 --- a/src/Symfony/Component/ErrorRenderer/Tests/ErrorRenderer/XmlErrorRendererTest.php +++ b/src/Symfony/Component/ErrorRenderer/Tests/ErrorRenderer/XmlErrorRendererTest.php @@ -43,7 +43,7 @@ XML; Internal Server Error 500 - + Whoops, looks like something went wrong. XML; diff --git a/src/Symfony/Component/HttpKernel/Tests/Controller/ErrorControllerTest.php b/src/Symfony/Component/HttpKernel/Tests/Controller/ErrorControllerTest.php index 83c429e876..4a64af3ab1 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Controller/ErrorControllerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Controller/ErrorControllerTest.php @@ -61,7 +61,7 @@ class ErrorControllerTest extends TestCase $request, FlattenException::createFromThrowable(new \Exception('foo')), 500, - '{"title": "Internal Server Error","status": 500}', + '{"title": "Internal Server Error","status": 500,"detail": "Whoops, looks like something went wrong."}', ]; $request = new Request(); @@ -70,7 +70,7 @@ class ErrorControllerTest extends TestCase $request, FlattenException::createFromThrowable(new HttpException(405, 'Invalid request.')), 405, - '{"title": "Method Not Allowed","status": 405}', + '{"title": "Method Not Allowed","status": 405,"detail": "Whoops, looks like something went wrong."}', ]; $request = new Request(); @@ -79,7 +79,7 @@ class ErrorControllerTest extends TestCase $request, FlattenException::createFromThrowable(new HttpException(405, 'Invalid request.')), 405, - '{"title": "Method Not Allowed","status": 405}', + '{"title": "Method Not Allowed","status": 405,"detail": "Whoops, looks like something went wrong."}', ]; $request = new Request();