From 95b8e20ba3365a0d443882e8138dcd722a0b6fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Fri, 21 May 2021 09:24:47 +0200 Subject: [PATCH] Exception Handler --- .env.example | 1 + app/Exceptions/Handler.php | 34 +++++++++++++++++-- config/mail.php | 4 +++ .../views/emails/exception-plain.blade.php | 10 ++++++ resources/views/emails/exception.blade.php | 16 +++++++++ 5 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 resources/views/emails/exception-plain.blade.php create mode 100644 resources/views/emails/exception.blade.php diff --git a/.env.example b/.env.example index ac034c4..51f00e7 100644 --- a/.env.example +++ b/.env.example @@ -27,6 +27,7 @@ MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" +MAIL_ADMIN=informatique.internet@ldc.fr # CRM CRM_ENDPOINT= diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 5a53cd3..dc35b9f 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -3,6 +3,8 @@ namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; +use Illuminate\Support\Facades\Mail; +use RuntimeException; use Throwable; class Handler extends ExceptionHandler @@ -32,11 +34,37 @@ class Handler extends ExceptionHandler * @param \Throwable $exception * @return void * - * @throws \Throwable + * @throws \Exception */ - public function report(Throwable $exception) + public function report(Throwable $e) { - parent::report($exception); + if (get_class($e) == RedirectTo::class) { + abort(redirect($e->url)); + } + try { + if (!config('app.debug')) { + if ($this->shouldntReport($e)) { + return; + } + Mail::send([ + 'html' => 'emails.exception', + 'text' => 'emails.exception-plain' + ], [ + 'exception' => $e, + 'appName' => config('app.name') + ], function ($m) { + $m->to( + config('mail.contactsList.serviceweb'), + sprintf('%s Exception Handler', config('app.name')) + )->subject('Need help !, an error occured in your application, please check Logs ASAP'); + }); + } + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + } catch (RuntimeException $e) { + // do nothing, mail send error, let laravel only handle this + } finally { + parent::report($e); + } } /** diff --git a/config/mail.php b/config/mail.php index 073f261..82973f7 100644 --- a/config/mail.php +++ b/config/mail.php @@ -18,6 +18,10 @@ return [ // Mail admin pour l'envoi de mail comme la fin de la génération des codes uniques 'MAIL_ADMIN' => env('MAIL_ADMIN'), + 'contactsList' => [ + 'serviceweb' => env('MAIL_ADMIN', 'informatique.internet@ldc.fr') + ], + /* |-------------------------------------------------------------------------- | Mailer Configurations diff --git a/resources/views/emails/exception-plain.blade.php b/resources/views/emails/exception-plain.blade.php new file mode 100644 index 0000000..0360447 --- /dev/null +++ b/resources/views/emails/exception-plain.blade.php @@ -0,0 +1,10 @@ +{{ $appName }} Exception Handler + +Une erreur est survenue sur le site {{ $appName }} +{{ $exception->getMessage() }} +date : {{ date('Y-m-d H:i:s') }} +code : {{$exception->getCode() }} +file : {{$exception->getFile() }} +line : {{$exception->getLine() }} + +Veuillez vérifier les logs pour en voir la trace. diff --git a/resources/views/emails/exception.blade.php b/resources/views/emails/exception.blade.php new file mode 100644 index 0000000..80a46d6 --- /dev/null +++ b/resources/views/emails/exception.blade.php @@ -0,0 +1,16 @@ + + + + {{ $appName }} Exception Handler + + + +

Une erreur est survenue sur le site {{ $appName }}

+

{{ $exception->getMessage() }}

+

date : {{ date('Y-m-d H:i:s') }}

+

code : {{$exception->getCode() }}

+

file : {{$exception->getFile() }}

+

line : {{$exception->getLine() }}

+

Veuillez vérifier les logs pour en voir la trace.

+ +