Skip to content

Commit

Permalink
Explicitly set theme in error handler, refactor middleware #715
Browse files Browse the repository at this point in the history
  • Loading branch information
nabeelio committed May 23, 2020
1 parent 4cd7eef commit 5046d26
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 45 deletions.
33 changes: 4 additions & 29 deletions app/Exceptions/Handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use App\Exceptions\Converters\GenericExceptionAbstract;
use App\Exceptions\Converters\SymfonyException;
use App\Exceptions\Converters\ValidationException;
use App\Http\Middleware\SetActiveTheme;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Auth\AuthenticationException;
Expand All @@ -17,7 +18,6 @@
use Illuminate\Validation\ValidationException as IlluminateValidationException;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException as SymfonyHttpException;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Throwable;
use Whoops\Handler\HandlerInterface;
Expand Down Expand Up @@ -54,8 +54,8 @@ public function render($request, Throwable $exception)
return $this->handleApiError($request, $exception);
}

if ($exception instanceof AbstractHttpException
&& $exception->getStatusCode() === 403) {
(new SetActiveTheme())->setTheme($request);
if ($exception instanceof AbstractHttpException && $exception->getStatusCode() === 403) {
return redirect()->guest('login');
}

Expand Down Expand Up @@ -119,38 +119,13 @@ protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson() || $request->is('api/*')) {
$error = new Unauthenticated();

return $error->getResponse();
}

return redirect()->guest('login');
}

/**
* Render the given HttpException.
*
* @param AbstractHttpException $e
*
* @return \Illuminate\Http\Response|Response
*/
protected function renderHttpException(HttpExceptionInterface $e)
{
$status = $e->getStatusCode();
view()->replaceNamespace('errors', [
resource_path('views/layouts/'.setting('general.theme', 'default').'/errors'),
resource_path('views/errors'),
__DIR__.'/views',
]);

if (view()->exists("errors::{$status}")) {
return response()->view("errors::{$status}", [
'exception' => $e,
'SKIN_NAME' => setting('general.theme', 'default'),
], $status, $e->getHeaders());
}

return $this->convertExceptionToResponse($e);
}

/**
* Ignition error page integration
*/
Expand Down
49 changes: 33 additions & 16 deletions app/Http/Middleware/SetActiveTheme.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,42 @@
*/
class SetActiveTheme implements Middleware
{
private static $skip = [
'admin',
'admin/*',
'api',
'api/*',
'importer',
'importer/*',
'install',
'install/*',
'update',
'update/*',
];

/**
* Handle the request
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$skip = [
'admin',
'admin/*',
'api',
'api/*',
'importer',
'importer/*',
'install',
'install/*',
'update',
'update/*',
];
$this->setTheme($request);
return $next($request);
}

if ($request->is($skip)) {
return $next($request);
/**
* Set the theme for the current middleware
*
* @param \Illuminate\Http\Request $request
*/
public function setTheme(Request $request)
{
if ($request->is(self::$skip)) {
return;
}

try {
Expand All @@ -42,7 +61,5 @@ public function handle(Request $request, Closure $next)
if (!empty($theme)) {
Theme::set($theme);
}

return $next($request);
}
}

0 comments on commit 5046d26

Please sign in to comment.