Revamp bootstrapping process to use PSR-7 middleware

pull/9/head
Franz Liedke 2015-05-27 02:39:09 +02:00
parent 334cebbf6f
commit 65c4a49ecf
3 changed files with 56 additions and 19 deletions

View File

@ -1,13 +1,43 @@
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Zend\Diactoros\Server;
use Zend\Stratigility\Http\Response as ZendResponse;
use Zend\Stratigility\MiddlewarePipe;
// Instantiate the application, register providers etc.
$app = require __DIR__.'/system/bootstrap.php';
$kernel = $app->make('Illuminate\Contracts\Http\Kernel');
// Build a middleware pipeline for Flarum
$flarum = new MiddlewarePipe();
$flarum->pipe($app->make('Flarum\Forum\Middleware\LoginWithCookie'));
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
$api = new MiddlewarePipe();
$api->pipe($app->make('Flarum\Api\Middleware\ReadJsonParameters'));
$api->pipe($app->make('Flarum\Api\Middleware\LoginWithHeader'));
$admin = new MiddlewarePipe();
$admin->pipe($app->make('Flarum\Admin\Middleware\LoginWithCookieAndCheckAdmin'));
$flarum->pipe('/api', $api);
$flarum->pipe('/admin', $admin);
$flarum->pipe(function(Request $request, Response $response, $next) use ($app) {
/** @var Flarum\Http\Router $router */
$router = $app->make('Flarum\Http\Router');
$response = new ZendResponse($router->dispatch($request));
return $next($request, $response);
});
$server = Server::createServer(
$flarum,
$_SERVER,
$_GET,
$_POST,
$_COOKIE,
$_FILES
);
$response->send();
$kernel->terminate($request, $response);
$server->listen();

View File

@ -8,19 +8,26 @@ $app = new Illuminate\Foundation\Application(
);
$app->instance('path.public', __DIR__.'/..');
use Illuminate\Foundation\Http\Kernel as IlluminateHttpKernel;
$middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'App\Http\Middleware\VerifyCsrfToken',
];
class HttpKernel extends IlluminateHttpKernel {
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'App\Http\Middleware\VerifyCsrfToken',
];
protected $routeMiddleware = [];
}
$bootstrappers = [
'Illuminate\Foundation\Bootstrap\DetectEnvironment',
'Illuminate\Foundation\Bootstrap\LoadConfiguration',
'Illuminate\Foundation\Bootstrap\ConfigureLogging',
//'Illuminate\Foundation\Bootstrap\HandleExceptions',
'Illuminate\Foundation\Bootstrap\RegisterFacades',
'Illuminate\Foundation\Bootstrap\RegisterProviders',
'Illuminate\Foundation\Bootstrap\BootProviders',
];
$app->bootstrapWith($bootstrappers);
use Illuminate\Foundation\Console\Kernel as IlluminateConsoleKernel;

View File

@ -118,7 +118,7 @@ return [
'Illuminate\Bus\BusServiceProvider',
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
'Illuminate\Routing\ControllerServiceProvider',
//'Illuminate\Routing\ControllerServiceProvider',
'Illuminate\Cookie\CookieServiceProvider',
'Illuminate\Database\DatabaseServiceProvider',
'Illuminate\Encryption\EncryptionServiceProvider',