Example #1
0
 public function handle(Exception $e)
 {
     if ($e instanceof JsonApiSerializable) {
         $status = $e->getStatusCode();
         $errors = $e->getErrors();
     } else {
         if ($e instanceof ValidationException) {
             $status = 422;
             $errors = $e->errors()->toArray();
             $errors = array_map(function ($field, $messages) {
                 return ['detail' => implode("\n", $messages), 'source' => ['pointer' => '/data/attributes/' . $field]];
             }, array_keys($errors), $errors);
         } else {
             if ($e instanceof ModelNotFoundException) {
                 $status = 404;
                 $errors = [];
             } else {
                 $status = 500;
                 $error = ['code' => $status, 'title' => 'Internal Server Error'];
                 if (Core::inDebugMode()) {
                     $error['detail'] = (string) $e;
                 }
                 $errors = [$error];
             }
         }
     }
     // JSON API errors must be collected in an array under the
     // "errors" key in the top level of the document
     $data = ['errors' => $errors];
     return new JsonResponse($data, $status);
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 protected function getDefaultAttributes($forum)
 {
     $attributes = ['title' => Core::config('forum_title'), 'baseUrl' => Core::url(), 'basePath' => parse_url(Core::url(), PHP_URL_PATH) ?: '', 'debug' => Core::inDebugMode(), 'apiUrl' => Core::url('api'), 'welcomeTitle' => Core::config('welcome_title'), 'welcomeMessage' => Core::config('welcome_message'), 'themePrimaryColor' => Core::config('theme_primary_color'), 'canView' => $forum->can($this->actor, 'view'), 'canStartDiscussion' => $forum->can($this->actor, 'startDiscussion'), 'allowSignUp' => (bool) Core::config('allow_sign_up'), 'defaultRoute' => Core::config('default_route')];
     if ($this->actor->isAdmin()) {
         $attributes['adminUrl'] = Core::url('admin');
         $attributes['version'] = Application::VERSION;
     }
     return $attributes;
 }
Example #3
0
use Flarum\Forum\Middleware\HandleErrors;
use Franzl\Middleware\Whoops\Middleware as WhoopsMiddleware;
use Zend\Diactoros\Server;
use Zend\Stratigility\MiddlewarePipe;
$app = (require __DIR__ . '/flarum/bootstrap.php');
// If Flarum's configuration exists, then we can assume that installation has
// been completed. We will set up a middleware pipe to route the request through
// to one of the main forum actions.
if (Core::isInstalled()) {
    $app->register('Flarum\\Forum\\ForumServiceProvider');
    $flarum = new MiddlewarePipe();
    $flarum->pipe($app->make('Flarum\\Forum\\Middleware\\LoginWithCookie'));
    $flarum->pipe($app->make('Flarum\\Api\\Middleware\\ReadJsonParameters'));
    $basePath = parse_url(Core::url(), PHP_URL_PATH);
    $router = $app->make('Flarum\\Http\\RouterMiddleware', ['routes' => $app->make('flarum.forum.routes')]);
    $flarum->pipe($basePath, $router);
    if (Core::inDebugMode()) {
        $flarum->pipe(new WhoopsMiddleware());
    } else {
        $flarum->pipe(new HandleErrors(base_path('error')));
    }
} else {
    $app->register('Flarum\\Install\\InstallServiceProvider');
    $flarum = new MiddlewarePipe();
    $basePath = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    $router = $app->make('Flarum\\Http\\RouterMiddleware', ['routes' => $app->make('flarum.install.routes')]);
    $flarum->pipe($basePath, $router);
    $flarum->pipe(new WhoopsMiddleware());
}
$server = Server::createServer($flarum, $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES);
$server->listen();