mirror of
https://github.com/Bubka/2FAuth.git
synced 2024-11-22 08:13:11 +01:00
Attempt to standardize api errors
This commit is contained in:
parent
a1f5358e4a
commit
1fcfc48ec0
@ -50,41 +50,135 @@ public function report(Exception $exception)
|
||||
*/
|
||||
public function render($request, Exception $exception)
|
||||
{
|
||||
if (!($exception instanceof ValidationException)) {
|
||||
$response = [
|
||||
'message' => (string)$exception->getMessage(),
|
||||
'status_code' => 400,
|
||||
];
|
||||
// if (!($exception instanceof ValidationException)) {
|
||||
|
||||
if ($exception instanceof HttpException) {
|
||||
$response['message'] = Response::$statusTexts[$exception->getStatusCode()];
|
||||
$response['status_code'] = $exception->getStatusCode();
|
||||
} else if ($exception instanceof ModelNotFoundException) {
|
||||
$response['message'] = Response::$statusTexts[Response::HTTP_NOT_FOUND];
|
||||
$response['status_code'] = Response::HTTP_NOT_FOUND;
|
||||
}
|
||||
// if ($exception instanceof \Illuminate\Auth\AuthenticationException) {
|
||||
|
||||
if ($this->isDebugMode()) {
|
||||
$response['debug'] = [
|
||||
'exception' => get_class($exception),
|
||||
'trace' => $exception->getTrace()
|
||||
];
|
||||
// return parent::render($request, $exception);
|
||||
}
|
||||
// $response['message'] = (string)$exception->getMessage();
|
||||
// $response['status_code'] = Response::HTTP_UNAUTHORIZED;
|
||||
|
||||
return response()->json($response, $response['status_code']);
|
||||
// } else if ($exception instanceof HttpException) {
|
||||
|
||||
// $response['message'] = Response::$statusTexts[$exception->getStatusCode()];
|
||||
// $response['status_code'] = $exception->getStatusCode();
|
||||
|
||||
// } else if ($exception instanceof ModelNotFoundException) {
|
||||
|
||||
// $response['message'] = Response::$statusTexts[Response::HTTP_NOT_FOUND];
|
||||
// $response['status_code'] = Response::HTTP_NOT_FOUND;
|
||||
// }
|
||||
// else {
|
||||
// $response = [
|
||||
// 'message' => (string)$exception->getMessage(),
|
||||
// 'status_code' => $exception->getStatusCode(),
|
||||
// ];
|
||||
// }
|
||||
|
||||
// if ($this->isDebugMode()) {
|
||||
// $response['debug'] = [
|
||||
// 'exception' => get_class($exception),
|
||||
// 'trace' => $exception->getTrace()
|
||||
// ];
|
||||
// // return parent::render($request, $exception);
|
||||
// }
|
||||
|
||||
// return response()->json($response, $response['status_code']);
|
||||
// }
|
||||
|
||||
// return parent::render($request, $exception);
|
||||
|
||||
if ( $request->wantsJson() ) {
|
||||
|
||||
return $this->handleApiException($request, $exception);
|
||||
|
||||
} else {
|
||||
|
||||
return parent::render($request, $exception);
|
||||
}
|
||||
|
||||
return parent::render($request, $exception);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the application is in debug mode.
|
||||
* Render an exception into an HTTP response.
|
||||
*
|
||||
* @return Boolean
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Exception $exception
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function isDebugMode()
|
||||
private function handleApiException($request, Exception $exception)
|
||||
{
|
||||
return (boolean) env('APP_DEBUG');
|
||||
$exception = $this->prepareException($exception);
|
||||
|
||||
if ($exception instanceof \Illuminate\Http\Exception\HttpResponseException) {
|
||||
$exception = $exception->getResponse();
|
||||
}
|
||||
|
||||
if ($exception instanceof \Illuminate\Auth\AuthenticationException) {
|
||||
$exception = $this->unauthenticated($request, $exception);
|
||||
}
|
||||
|
||||
if ($exception instanceof \Illuminate\Validation\ValidationException) {
|
||||
$exception = $this->convertValidationExceptionToResponse($exception, $request);
|
||||
}
|
||||
|
||||
return $this->customApiResponse($exception);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set a specific response payload for commons http error codes
|
||||
*
|
||||
* @param \Exception $exception
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
private function customApiResponse($exception)
|
||||
{
|
||||
if (method_exists($exception, 'getStatusCode')) {
|
||||
$statusCode = $exception->getStatusCode();
|
||||
} else {
|
||||
$statusCode = 500;
|
||||
}
|
||||
|
||||
$response = [];
|
||||
$response['status_code'] = $statusCode;
|
||||
|
||||
switch ($statusCode) {
|
||||
case 401:
|
||||
$response['message'] = 'Unauthorized';
|
||||
break;
|
||||
|
||||
case 403:
|
||||
$response['message'] = 'Forbidden';
|
||||
break;
|
||||
|
||||
case 404:
|
||||
$response['message'] = 'Not Found';
|
||||
break;
|
||||
|
||||
case 405:
|
||||
$response['message'] = 'Method Not Allowed';
|
||||
break;
|
||||
|
||||
case 422:
|
||||
$response['message'] = $exception->original['message'];
|
||||
$response['errors'] = $exception->original['errors'];
|
||||
break;
|
||||
|
||||
default:
|
||||
$response['message'] = ($statusCode >= 500) ? 'Whoops, looks like something went wrong' : $exception->getMessage();
|
||||
break;
|
||||
}
|
||||
|
||||
if (env('APP_DEBUG')) {
|
||||
|
||||
$response['debug'] = [
|
||||
// 'exception' => get_class($exception),
|
||||
// 'code' => $exception->getCode(),
|
||||
// 'trace' => $exception->getTrace(),
|
||||
];
|
||||
}
|
||||
|
||||
return response()->json($response, $statusCode);
|
||||
}
|
||||
}
|
||||
|
@ -176,13 +176,13 @@
|
||||
|
||||
},
|
||||
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if ( ! localStorage.getItem('jwt')) {
|
||||
return next('login')
|
||||
}
|
||||
// beforeRouteEnter (to, from, next) {
|
||||
// if ( ! localStorage.getItem('jwt')) {
|
||||
// return next('login')
|
||||
// }
|
||||
|
||||
next()
|
||||
}
|
||||
// next()
|
||||
// }
|
||||
}
|
||||
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user