Files
3dealer/app/Providers/AppServiceProvider.php
T

63 lines
2.0 KiB
PHP

<?php
namespace App\Providers;
use App\Models\Customer;
use App\Models\Staff;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
use Illuminate\View\View as ViewInstance;
use Lunar\Facades\ModelManifest;
use Lunar\Facades\Telemetry;
use Modules\Core\Catalog\DTOs\CollectionFilters;
use Modules\Core\Catalog\Enums\CollectionSort;
use Modules\Core\Catalog\Services\CollectionService;
class AppServiceProvider extends ServiceProvider
{
public function register(): void
{
// One instance per request: it caches the guest cookie's ids, so a
// toggle and a later has() in the same request agree.
$this->app->scoped(\App\Services\Wishlist::class);
}
public function boot(): void
{
Telemetry::optOut();
// header.blade.php's category dropdown — root collections only, resolved
// per-request so the composer runs after `locale` middleware has already
// set App::getLocale(), which CollectionService's name resolution depends on.
View::composer('components.header', function (ViewInstance $view) {
$view->with('categories', app(CollectionService::class)->list(
filters: new CollectionFilters(rootOnly: true),
perPage: 100,
sort: CollectionSort::Position,
)->items());
});
if ($this->app->environment('production')) {
URL::forceScheme('https');
}
$this->app->booted(function () {
ModelManifest::replace(
\Lunar\Models\Contracts\Customer::class,
Customer::class,
);
$this->app['config']->set(
'auth.providers.staff.model',
Staff::class,
);
Relation::morphMap([
'staff' => \Lunar\Admin\Models\Staff::class,
]);
});
}
}