diff --git a/src/Foundation/ErrorHandling/FrontendFormatter.php b/src/Foundation/ErrorHandling/FrontendFormatter.php index 9deafe0f4..8166f9d13 100644 --- a/src/Foundation/ErrorHandling/FrontendFormatter.php +++ b/src/Foundation/ErrorHandling/FrontendFormatter.php @@ -10,6 +10,9 @@ namespace Flarum\Foundation\ErrorHandling; use Flarum\Frontend\Controller; +use Flarum\Http\Content\PermissionDenied; +use Flarum\Http\Content\NotAuthenticated; +use Flarum\Http\Content\NotFound; use Flarum\Settings\SettingsRepositoryInterface; use Illuminate\Contracts\Container\Container; use Psr\Http\Message\ResponseInterface as Response; @@ -55,6 +58,16 @@ class FrontendFormatter implements HttpFormatter { $frontend = $this->container->make("flarum.frontend.forum"); + if ($error->getStatusCode() === 401) { + $frontend->content(new NotAuthenticated); + } + elseif ($error->getStatusCode() === 403) { + $frontend->content(new PermissionDenied); + } + elseif ($error->getStatusCode() === 404) { + $frontend->content(new NotFound); + } + return (new Controller($frontend))->handle($request)->withStatus($error->getStatusCode()); } } diff --git a/src/Http/Content/NotAuthenticated.php b/src/Http/Content/NotAuthenticated.php new file mode 100644 index 000000000..a40078c7b --- /dev/null +++ b/src/Http/Content/NotAuthenticated.php @@ -0,0 +1,24 @@ +title = 'Not Authenticated'; + $document->payload['errorCode'] = 103; + + return $document; + } +} diff --git a/src/Http/Content/NotFound.php b/src/Http/Content/NotFound.php new file mode 100644 index 000000000..f0ff9816f --- /dev/null +++ b/src/Http/Content/NotFound.php @@ -0,0 +1,24 @@ +title = 'Not Found'; + $document->payload['errorCode'] = 404; + + return $document; + } +} diff --git a/src/Http/Content/PermissionDenied.php b/src/Http/Content/PermissionDenied.php new file mode 100644 index 000000000..991a084ff --- /dev/null +++ b/src/Http/Content/PermissionDenied.php @@ -0,0 +1,24 @@ +title = 'Permission Denied'; + $document->payload['errorCode'] = 403; + + return $document; + } +}