/
Handler.php
executable file
·94 lines (82 loc) · 2.57 KB
/
Handler.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
namespace App\Exceptions;
use App\Exceptions\QueryException as ExceptionsQueryException;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Database\QueryException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\ValidationException as MainValidationException;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
'password_confirm'
];
/**
* Report or log an exception.
*
* @param \Throwable $exception
* @return void
*
* @throws \Exception
*/
public function report(Throwable $exception)
{
parent::report($exception);
}
/**
* We want to use our defined route
* instead of what is provided by laravel.
* @return \Illuminate\Routing\Redirector
*
*/
protected function unauthenticated($request, AuthenticationException $exception)
{
if ( $request->expectsJson() ) {
return response()->json([ 'status' => 'failed', 'message' => __( 'You\'re not authenticated.' ) ], 401);
}
return redirect()->guest( ns()->route( 'ns.login' ) );
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Throwable $exception
* @return \Symfony\Component\HttpFoundation\Response
*
* @throws \Throwable
*/
public function render($request, Throwable $exception)
{
if ( $exception instanceof MainValidationException ) {
return ( new ValidationException( $exception->validator, $exception->response, $exception->errorBag ) )
->render( $request );
}
if ( $exception instanceof QueryException ) {
if ( $request->expectsJson() ) {
Log::error( $exception->getMessage() );
return response()->json([
'message' => env( 'APP_DEBUG' ) ? $exception->getMessage() : __( 'A database error has occured.' )
], 404);
}
return ( new ExceptionsQueryException( $exception->getMessage() ) )
->render( $request );
}
return parent::render($request, $exception);
}
}