2015-12-06 18:58:49 +00:00
|
|
|
<?php
|
2016-12-07 22:46:38 +00:00
|
|
|
|
2015-12-06 18:58:49 +00:00
|
|
|
namespace Pterodactyl\Exceptions;
|
|
|
|
|
2016-08-16 23:20:58 +00:00
|
|
|
use Log;
|
2017-09-27 03:54:34 +00:00
|
|
|
use Throwable;
|
2018-01-01 21:11:44 +00:00
|
|
|
use Illuminate\Http\Response;
|
2017-12-17 20:57:05 +00:00
|
|
|
use Prologue\Alerts\AlertsMessageBag;
|
2016-08-16 23:20:58 +00:00
|
|
|
|
2017-06-11 03:28:44 +00:00
|
|
|
class DisplayException extends PterodactylException
|
2015-12-06 18:58:49 +00:00
|
|
|
{
|
2017-12-17 20:57:05 +00:00
|
|
|
const LEVEL_DEBUG = 'debug';
|
|
|
|
const LEVEL_INFO = 'info';
|
2017-10-06 05:16:22 +00:00
|
|
|
const LEVEL_WARNING = 'warning';
|
|
|
|
const LEVEL_ERROR = 'error';
|
|
|
|
|
2017-09-27 03:54:34 +00:00
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $level;
|
|
|
|
|
2017-03-19 23:36:50 +00:00
|
|
|
/**
|
|
|
|
* Exception constructor.
|
|
|
|
*
|
2017-09-27 03:54:34 +00:00
|
|
|
* @param string $message
|
|
|
|
* @param Throwable|null $previous
|
|
|
|
* @param string $level
|
2017-10-24 02:10:32 +00:00
|
|
|
* @param int $code
|
2017-03-19 23:36:50 +00:00
|
|
|
*/
|
2017-10-24 02:10:32 +00:00
|
|
|
public function __construct($message, Throwable $previous = null, $level = self::LEVEL_ERROR, $code = 0)
|
2016-08-16 23:20:58 +00:00
|
|
|
{
|
2017-12-17 20:57:05 +00:00
|
|
|
parent::__construct($message, $code, $previous);
|
2017-09-27 03:54:34 +00:00
|
|
|
|
|
|
|
if (! is_null($previous)) {
|
|
|
|
Log::{$level}($previous);
|
2016-08-16 23:20:58 +00:00
|
|
|
}
|
|
|
|
|
2017-12-17 20:57:05 +00:00
|
|
|
$this->level = $level;
|
2016-08-16 23:20:58 +00:00
|
|
|
}
|
2017-09-27 03:54:34 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getErrorLevel()
|
|
|
|
{
|
|
|
|
return $this->level;
|
|
|
|
}
|
2017-12-17 20:57:05 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Render the exception to the user by adding a flashed message to the session
|
|
|
|
* and then redirecting them back to the page that they came from. If the
|
|
|
|
* request originated from an API hit, return the error in JSONAPI spec format.
|
|
|
|
*
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
|
|
|
|
*/
|
|
|
|
public function render($request)
|
|
|
|
{
|
|
|
|
if ($request->expectsJson()) {
|
|
|
|
return response()->json(Handler::convertToArray($this, [
|
|
|
|
'detail' => $this->getMessage(),
|
2018-01-21 22:02:03 +00:00
|
|
|
]), method_exists($this, 'getStatusCode') ? $this->getStatusCode() : Response::HTTP_BAD_REQUEST);
|
2017-12-17 20:57:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
app()->make(AlertsMessageBag::class)->danger($this->getMessage())->flash();
|
|
|
|
|
|
|
|
return redirect()->back()->withInput();
|
|
|
|
}
|
2015-12-06 18:58:49 +00:00
|
|
|
}
|