isExceptionType($e, NotifyException::class)) { session()->flash('error', $this->getOriginalMessage($e)); return redirect($e->redirectLocation); } // Handle pretty exceptions which will show a friendly application-fitting page // Which will include the basic message to point the user roughly to the cause. if ($this->isExceptionType($e, PrettyException::class) && !config('app.debug')) { $message = $this->getOriginalMessage($e); $code = ($e->getCode() === 0) ? 500 : $e->getCode(); return response()->view('errors/' . $code, ['message' => $message], $code); } return parent::render($request, $e); } /** * Check the exception chain to compare against the original exception type. * @param Exception $e * @param $type * @return bool */ protected function isExceptionType(Exception $e, $type) { do { if (is_a($e, $type)) return true; } while ($e = $e->getPrevious()); return false; } /** * Get original exception message. * @param Exception $e * @return string */ protected function getOriginalMessage(Exception $e) { do { $message = $e->getMessage(); } while ($e = $e->getPrevious()); return $message; } /** * Convert an authentication exception into an unauthenticated response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception * @return \Illuminate\Http\Response */ protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); } return redirect()->guest('login'); } /** * Convert a validation exception into a JSON response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Validation\ValidationException $exception * @return \Illuminate\Http\JsonResponse */ protected function invalidJson($request, ValidationException $exception) { return response()->json($exception->errors(), $exception->status); } }