From 059bf32563c7422c891a637fdc4c1cb4d2ab427d Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 6 Mar 2022 16:03:52 +0100 Subject: [PATCH] Include headers in error message. --- app/Exceptions/Handler.php | 9 ++++++++- app/Jobs/MailError.php | 5 +++-- resources/lang/en_US/email.php | 1 + resources/views/emails/error-html.twig | 13 ++++++++++++- resources/views/emails/error-text.twig | 10 ++++++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 9b52ef9dc6..fc07889266 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -153,6 +153,12 @@ class Handler extends ExceptionHandler $userData['id'] = auth()->user()->id; $userData['email'] = auth()->user()->email; } + + $headers = []; + if (request()->headers) { + $headers = request()->headers->all(); + } + $data = [ 'class' => get_class($e), 'errorMessage' => $e->getMessage(), @@ -165,11 +171,12 @@ class Handler extends ExceptionHandler 'url' => request()->fullUrl(), 'userAgent' => request()->userAgent(), 'json' => request()->acceptsJson(), + 'headers' => $headers, ]; // create job that will mail. $ipAddress = request()->ip() ?? '0.0.0.0'; - $job = new MailError($userData, (string)config('firefly.site_owner'), $ipAddress, $data); + $job = new MailError($userData, (string) config('firefly.site_owner'), $ipAddress, $data); dispatch($job); parent::report($e); diff --git a/app/Jobs/MailError.php b/app/Jobs/MailError.php index e5657705fd..2f8b56ddba 100644 --- a/app/Jobs/MailError.php +++ b/app/Jobs/MailError.php @@ -60,7 +60,8 @@ class MailError extends Job implements ShouldQueue $this->exception = $exceptionData; $debug = $exceptionData; unset($debug['stackTrace']); - Log::error('Exception is: ' . json_encode($debug)); + unset($debug['headers']); + Log::error(sprintf('Exception is: %s', json_encode($debug))); } /** @@ -81,7 +82,7 @@ class MailError extends Job implements ShouldQueue $args, function (Message $message) use ($email) { if ('mail@example.com' !== $email) { - $message->to($email, $email)->subject((string)trans('email.error_subject')); + $message->to($email, $email)->subject((string) trans('email.error_subject')); } } ); diff --git a/resources/lang/en_US/email.php b/resources/lang/en_US/email.php index 9933aa9884..e282644bcf 100644 --- a/resources/lang/en_US/email.php +++ b/resources/lang/en_US/email.php @@ -97,6 +97,7 @@ return [ 'error_github_html' => 'If you prefer, you can also open a new issue on GitHub.', 'error_github_text' => 'If you prefer, you can also open a new issue on https://github.com/firefly-iii/firefly-iii/issues.', 'error_stacktrace_below' => 'The full stacktrace is below:', + 'error_headers' => 'The following headers may also be relevant:', // report new journals 'new_journals_subject' => 'Firefly III has created a new transaction|Firefly III has created :count new transactions', diff --git a/resources/views/emails/error-html.twig b/resources/views/emails/error-html.twig index 01c97e9e7d..571d7ba757 100644 --- a/resources/views/emails/error-html.twig +++ b/resources/views/emails/error-html.twig @@ -27,7 +27,6 @@

{{ trans('email.error_ip', { ip: ip }) }} (info)
{{ trans('email.error_url', {url :url }) }}
- {{ trans('email.error_user_agent', {userAgent: userAgent }) }}

@@ -42,4 +41,16 @@

{{ stackTrace|nl2br }}

+ +

+ {{ trans('email.error_headers') }} +

+

+{% for key, header in headers %} +{% if (key != 'cookie') and header[0] != '' %} +- {{ key }}: {{ header[0] }}
+{% endif %} +{% endfor %} +

+ {% include 'emails.footer-html' %} diff --git a/resources/views/emails/error-text.twig b/resources/views/emails/error-text.twig index 35e4a46334..96276ae4e0 100644 --- a/resources/views/emails/error-text.twig +++ b/resources/views/emails/error-text.twig @@ -24,4 +24,14 @@ {{ trans('email.error_stacktrace_below')|raw }} {{ stackTrace|raw }} + +{{ trans('email.error_headers') }} + +{% for key, header in headers %} +{% if (key != 'cookie') and header[0] != '' %} +- {{ key }}: {{ header[0] }} +{% endif %} +{% endfor %} + + {% include 'emails.footer-text' %}