mirror of
https://github.com/Bubka/2FAuth.git
synced 2024-11-22 16:23:18 +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)
|
public function render($request, Exception $exception)
|
||||||
{
|
{
|
||||||
if (!($exception instanceof ValidationException)) {
|
// if (!($exception instanceof ValidationException)) {
|
||||||
$response = [
|
|
||||||
'message' => (string)$exception->getMessage(),
|
|
||||||
'status_code' => 400,
|
|
||||||
];
|
|
||||||
|
|
||||||
if ($exception instanceof HttpException) {
|
// if ($exception instanceof \Illuminate\Auth\AuthenticationException) {
|
||||||
$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 ($this->isDebugMode()) {
|
// $response['message'] = (string)$exception->getMessage();
|
||||||
$response['debug'] = [
|
// $response['status_code'] = Response::HTTP_UNAUTHORIZED;
|
||||||
'exception' => get_class($exception),
|
|
||||||
'trace' => $exception->getTrace()
|
|
||||||
];
|
|
||||||
// return parent::render($request, $exception);
|
|
||||||
}
|
|
||||||
|
|
||||||
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) {
|
// beforeRouteEnter (to, from, next) {
|
||||||
if ( ! localStorage.getItem('jwt')) {
|
// if ( ! localStorage.getItem('jwt')) {
|
||||||
return next('login')
|
// return next('login')
|
||||||
}
|
// }
|
||||||
|
|
||||||
next()
|
// next()
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user