Files
amare/app/Providers/AppServiceProvider.php
manoel freitas 286522d8a2 fix: keep Livewire temp uploads local when using R2
Avoid browser PUT to R2 (CORS) by defaulting Filament/Livewire temp disk to local, and document Dokploy tinker + R2 CORS gotchas.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 00:11:32 -03:00

81 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Providers;
use App\Application\Data\PageMeta;
use App\Models\SiteSetting;
use Carbon\CarbonImmutable;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
use Illuminate\View\View as ViewInstance;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
$this->configureLivewireTemporaryUploads();
$this->freezeClockWhenConfigured();
View::composer('layouts.public', function (ViewInstance $view): void {
$settings = $view->offsetExists('siteSettings')
? $view->offsetGet('siteSettings')
: SiteSetting::instance();
if (! $view->offsetExists('siteSettings')) {
$view->with('siteSettings', $settings);
}
if (! $view->offsetExists('pageMeta')) {
$view->with('pageMeta', PageMeta::forPage(
canonical: url()->current(),
settings: $settings,
));
}
});
}
/**
* Keep Livewire/Filament temp uploads on the local disk.
*
* When FILESYSTEM_DISK=r2, Livewire would otherwise use the S3 driver and
* browser-PUT straight to R2 (CORS). Final media still uses the r2 disk via
* PublicImageUploadRules. Explicit LIVEWIRE_TEMPORARY_FILE_UPLOAD_DISK wins.
*/
private function configureLivewireTemporaryUploads(): void
{
if (filled(config('livewire.temporary_file_upload.disk'))) {
return;
}
config(['livewire.temporary_file_upload.disk' => 'local']);
}
private function freezeClockWhenConfigured(): void
{
if ($this->app->environment('production')) {
return;
}
$frozenNow = config('app.frozen_now');
if (! filled($frozenNow)) {
return;
}
CarbonImmutable::setTestNow(CarbonImmutable::parse((string) $frozenNow));
}
}