| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  | namespace BookStack\Exceptions; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use Exception; | 
					
						
							| 
									
										
										
										
											2016-01-10 03:23:35 +08:00
										 |  |  | use Illuminate\Contracts\Validation\ValidationException; | 
					
						
							|  |  |  | use Illuminate\Database\Eloquent\ModelNotFoundException; | 
					
						
							| 
									
										
										
										
											2016-02-04 04:52:25 +08:00
										 |  |  | use PhpSpec\Exception\Example\ErrorException; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | use Symfony\Component\HttpKernel\Exception\HttpException; | 
					
						
							|  |  |  | use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; | 
					
						
							| 
									
										
										
										
											2016-01-10 03:23:35 +08:00
										 |  |  | use Illuminate\Auth\Access\AuthorizationException; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Handler extends ExceptionHandler | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * A list of the exception types that should not be reported. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $dontReport = [ | 
					
						
							| 
									
										
										
										
											2016-01-10 03:23:35 +08:00
										 |  |  |         AuthorizationException::class, | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |         HttpException::class, | 
					
						
							| 
									
										
										
										
											2016-01-10 03:23:35 +08:00
										 |  |  |         ModelNotFoundException::class, | 
					
						
							|  |  |  |         ValidationException::class, | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Report or log an exception. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * This is a great spot to send exceptions to Sentry, Bugsnag, etc. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-09-05 00:16:58 +08:00
										 |  |  |      * @param  \Exception $e | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function report(Exception $e) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return parent::report($e); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Render an exception into an HTTP response. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-02-04 04:52:25 +08:00
										 |  |  |      * @param  \Illuminate\Http\Request $request | 
					
						
							|  |  |  |      * @param  \Exception $e | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return \Illuminate\Http\Response | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function render($request, Exception $e) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-04 04:52:25 +08:00
										 |  |  |         // Handle notify exceptions which will redirect to the
 | 
					
						
							|  |  |  |         // specified location then show a notification message.
 | 
					
						
							|  |  |  |         if ($e instanceof NotifyException) { | 
					
						
							| 
									
										
										
										
											2015-09-05 00:16:58 +08:00
										 |  |  |             \Session::flash('error', $e->message); | 
					
						
							|  |  |  |             return response()->redirectTo($e->redirectLocation); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-04 04:52:25 +08:00
										 |  |  |         // 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 (($e instanceof PrettyException || $e->getPrevious() instanceof PrettyException)  && !config('app.debug')) { | 
					
						
							|  |  |  |             $message = ($e instanceof PrettyException) ? $e->getMessage() : $e->getPrevious()->getMessage(); | 
					
						
							| 
									
										
										
										
											2016-03-06 02:09:21 +08:00
										 |  |  |             $code = ($e->getCode() === 0) ? 500 : $e->getCode(); | 
					
						
							|  |  |  |             return response()->view('errors/' . $code, ['message' => $message], $code); | 
					
						
							| 
									
										
										
										
											2016-02-04 04:52:25 +08:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |         return parent::render($request, $e); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |