72 lines
2.3 KiB
PHP
72 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use App\Models\User;
|
|
use Diglactic\Breadcrumbs\Breadcrumbs;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\App;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Illuminate\Support\Facades\Session;
|
|
use Inertia\Middleware;
|
|
use Uwil\LaravelBackend\Enums\RoleEnum;
|
|
use Uwil\LaravelCommon\Enums\ItemsPerPaginationEnum;
|
|
|
|
class HandleInertiaRequests extends Middleware
|
|
{
|
|
/**
|
|
* The root template that is loaded on the first page visit.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $rootView = 'back/app';
|
|
|
|
/**
|
|
* Determine the current asset version.
|
|
*/
|
|
public function version(Request $request): ?string
|
|
{
|
|
return parent::version($request);
|
|
}
|
|
|
|
/**
|
|
* Define the props that are shared by default.
|
|
*
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function share(Request $request): array
|
|
{
|
|
$locale = Session::get('lang') ?? config('app.fallback_locale');
|
|
app()->setLocale($locale);
|
|
// Get translations from translator app.
|
|
$translations = Cache::get(sprintf('translations_%s', $locale), function () {
|
|
$translator = App::make('translator');
|
|
$property = (new \ReflectionClass($translator))->getProperty('loaded');
|
|
$property->setAccessible(true);
|
|
return $property->getValue($translator);
|
|
});
|
|
$props = [
|
|
...parent::share($request),
|
|
'auth' => [
|
|
'user' => $request->user(),
|
|
'policies' => [
|
|
'users' => [
|
|
'viewAny' => Gate::allows('viewAny', User::class),
|
|
'create' => Gate::allows('create', User::class),
|
|
]
|
|
]
|
|
],
|
|
'enumItemsPerPagination' => ItemsPerPaginationEnum::toArray(),
|
|
'enumUserRole' => RoleEnum::toArray(),
|
|
'translations' => $translations,
|
|
'locale' => $locale,
|
|
];
|
|
if (Breadcrumbs::exists($request->route()->getName())) {
|
|
$props = array_merge($props, [
|
|
'breacrumbs' => Breadcrumbs::generate($request->route()->getName())->toArray()
|
|
]);
|
|
}
|
|
return $props;
|
|
}
|
|
}
|