diff --git a/.env.example b/.env.example index 7dc51e1..8f09ece 100644 --- a/.env.example +++ b/.env.example @@ -32,6 +32,7 @@ MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" +MAIL_LIST_SERVICEWEB=informatique.internet@ldc.fr AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 7e40d73..5892cad 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -3,9 +3,13 @@ namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; +use Illuminate\Support\Facades\Mail; +use RuntimeException; +use Throwable; class Handler extends ExceptionHandler { + /** * A list of the exception types that are not reported. * @@ -25,6 +29,45 @@ class Handler extends ExceptionHandler 'password_confirmation', ]; + /** + * Report or log an exception. + * + * @param \Throwable $exception + * @return void + * + * @throws \Exception + */ + public function report(Throwable $e) + { + if (get_class($e) == RedirectTo::class) { + abort(redirect($e->url)); + } + try { + if (config('app.debug') === false) { + 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); + } + } + /** * Register the exception handling callbacks for the application. * diff --git a/config/mail.php b/config/mail.php index 6649a64..8df1fc5 100644 --- a/config/mail.php +++ b/config/mail.php @@ -91,6 +91,10 @@ return [ 'name' => env('MAIL_FROM_NAME', 'Example'), ], + 'contactsList' => [ + 'serviceweb' => env('MAIL_LIST_SERVICEWEB', 'informatique.internet@ldc.fr') + ], + /* |-------------------------------------------------------------------------- | Markdown Mail Settings 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 @@ + + +
+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.
+ +