Use Inertia Middleware for bootstrapping (#88)

* Use Inertia Middleware for bootstrapping

* Update Middleware

* WIP

* Rename middleware to new defaults

* Fix middleware in Kernel

* Align Middleware + update dependency

Co-authored-by: Claudio Dekker <claudiodekker@users.noreply.github.com>
This commit is contained in:
Claudio Dekker 2020-10-23 14:15:07 +02:00 committed by GitHub
parent c322e813f0
commit 39cd397852
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 1209 additions and 521 deletions

View File

@ -37,6 +37,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\HandleInertiaRequests::class
],
'api' => [

View File

@ -0,0 +1,63 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Inertia\Middleware;
class HandleInertiaRequests extends Middleware
{
/**
* The root template that's loaded on the first page visit.
*
* @see https://inertiajs.com/server-side-setup#root-template
* @var string
*/
protected $rootView = 'app';
/**
* Determines the current asset version.
*
* @see https://inertiajs.com/asset-versioning
* @param \Illuminate\Http\Request $request
* @return string|null
*/
public function version(Request $request)
{
return parent::version($request);
}
/**
* Defines the props that are shared by default.
*
* @see https://inertiajs.com/shared-data
* @param \Illuminate\Http\Request $request
* @return array
*/
public function share(Request $request)
{
return array_merge(parent::share($request), [
'auth' => function () use ($request) {
return [
'user' => $request->user() ? [
'id' => $request->user()->id,
'first_name' => $request->user()->first_name,
'last_name' => $request->user()->last_name,
'email' => $request->user()->email,
'role' => $request->user()->role,
'account' => [
'id' => $request->user()->account->id,
'name' => $request->user()->account->name,
],
] : null,
];
},
'flash' => function () use ($request) {
return [
'success' => $request->session()->get('success'),
'error' => $request->session()->get('error'),
];
},
]);
}
}

View File

@ -5,12 +5,9 @@ namespace App\Providers;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\UrlWindow;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\ServiceProvider;
use Inertia\Inertia;
use League\Glide\Server;
class AppServiceProvider extends ServiceProvider
@ -22,42 +19,10 @@ class AppServiceProvider extends ServiceProvider
*/
public function register()
{
$this->registerInertia();
$this->registerGlide();
$this->registerLengthAwarePaginator();
}
public function registerInertia()
{
Inertia::version(function () {
return md5_file(public_path('mix-manifest.json'));
});
Inertia::share([
'auth' => function () {
return [
'user' => Auth::user() ? [
'id' => Auth::user()->id,
'first_name' => Auth::user()->first_name,
'last_name' => Auth::user()->last_name,
'email' => Auth::user()->email,
'role' => Auth::user()->role,
'account' => [
'id' => Auth::user()->account->id,
'name' => Auth::user()->account->name,
],
] : null,
];
},
'flash' => function () {
return [
'success' => Session::get('success'),
'error' => Session::get('error'),
];
},
]);
}
protected function registerGlide()
{
$this->app->bind(Server::class, function ($app) {

View File

@ -16,7 +16,7 @@
"fruitcake/laravel-cors": "^2.0",
"fzaninotto/faker": "^1.9.1",
"guzzlehttp/guzzle": "^7.0.1",
"inertiajs/inertia-laravel": "^0.2",
"inertiajs/inertia-laravel": "^0.3",
"laravel/framework": "^8.0",
"laravel/legacy-factories": "^1.0",
"laravel/tinker": "^2.0",

1629
composer.lock generated

File diff suppressed because it is too large Load Diff