presseportale/app/Console/Commands/PrivatizePressReleaseMedia.php
Kevin Adametz 6250b0bab4 media: PM-Medien privat ausliefern + Vorschau-Signatur (M4, M5, Fix#4/#5)
- Neue PM-Bilder/Anhänge liegen auf der privaten local-Disk; Auslieferung
  über kontrollierte Media-Routen mit gemeinsamer Zugriffslogik
  (AuthorizesPressReleaseMediaAccess). Öffentliche Medien werden aus den
  geladenen Modellen ermittelt (weniger Queries) und länger gecacht.
- Anonyme Token-Vorschau lädt Bilder über temporär signierte URLs (Fix#5).
- API-Resource baut Variant-URLs über die Media-Route statt /storage
  (Fix#4). Storage-Schicht prüft zusätzlich den serverseitigen MIME-Type (M5).
- press-releases:privatize-media migriert Bestandsmedien.

Deployment: einmalig `php artisan press-releases:privatize-media` ausführen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:48:06 +00:00

39 lines
965 B
PHP

<?php
namespace App\Console\Commands;
use App\Services\PressRelease\PressReleaseMediaPrivatizer;
use Illuminate\Console\Command;
class PrivatizePressReleaseMedia extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'press-releases:privatize-media';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Verschiebt bestehende Pressemitteilungs-Medien vom öffentlichen auf den privaten Datenträger';
/**
* Execute the console command.
*/
public function handle(PressReleaseMediaPrivatizer $privatizer): int
{
$counts = $privatizer->privatizeAll();
$this->info(sprintf(
'%d Bilder und %d Anhänge wurden auf den privaten Datenträger migriert.',
$counts['images'],
$counts['attachments'],
));
return self::SUCCESS;
}
}