<?php namespace Filament\Actions\Exports\Http\Controllers; use Filament\Actions\Exports\Enums\ExportFormat; use Filament\Actions\Exports\Models\Export; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use Symfony\Component\HttpFoundation\StreamedResponse; use function Filament\authorize; class DownloadExport { public function __invoke(Request $request, Export $export): StreamedResponse { if (filled(Gate::getPolicyFor($export::class))) { authorize('view', $export); } else { abort_unless($export->user()->is(auth()->user()), 403); } $format = ExportFormat::tryFrom($request->query('format')); abort_unless($format !== null, 404); return $format->getDownloader()($export); } }