diff --git a/cp/app/Lib/Logger.php b/cp/app/Lib/Logger.php index 9026504..111a07e 100644 --- a/cp/app/Lib/Logger.php +++ b/cp/app/Lib/Logger.php @@ -128,6 +128,35 @@ class Logger extends \Monolog\Logger } else { $logger = new Logger('errors'); ErrorHandler::register($logger); + + set_exception_handler(function ($e) use ($logger) { + http_response_code(500); + + $logger->error("Unhandled exception", [ + 'message' => $e->getMessage(), + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'trace' => $e->getTraceAsString() + ]); + + include '/var/www/cp/resources/error.html'; + }); + + register_shutdown_function(function () use ($logger) { + $error = error_get_last(); + if ($error && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) { + http_response_code(500); + + $logger->error("Fatal error", [ + 'message' => $error['message'], + 'file' => $error['file'], + 'line' => $error['line'], + 'type' => $error['type'] + ]); + + include '/var/www/cp/resources/error.html'; + } + }); } } diff --git a/cp/app/Middleware/AuditMiddleware.php b/cp/app/Middleware/AuditMiddleware.php new file mode 100644 index 0000000..dd434bd --- /dev/null +++ b/cp/app/Middleware/AuditMiddleware.php @@ -0,0 +1,22 @@ +container->get('db')->exec("SET @audit_usr_id = $userId"); + $this->container->get('db')->exec("SET @audit_ses_id = " . crc32(\Pinga\Session\Session::id())); + } + return $handler->handle($request); + } + +} diff --git a/cp/bootstrap/app.php b/cp/bootstrap/app.php index 0b95b49..021b0fc 100644 --- a/cp/bootstrap/app.php +++ b/cp/bootstrap/app.php @@ -261,6 +261,7 @@ $container->set('csrf', function($container) use ($responseFactory) { return new Slim\Csrf\Guard($responseFactory); }); +$app->add(new \App\Middleware\AuditMiddleware($container)); $app->add(new \App\Middleware\ValidationErrorsMiddleware($container)); $app->add(new \App\Middleware\OldInputMiddleware($container)); $app->add(new \App\Middleware\CsrfViewMiddleware($container)); diff --git a/cp/resources/error.html b/cp/resources/error.html new file mode 100644 index 0000000..c903062 --- /dev/null +++ b/cp/resources/error.html @@ -0,0 +1,60 @@ + + +
+ + + +Please try again shortly
+If the problem persists, please contact support.
+ +