Update admin PWA events, branding, and packages
This commit is contained in:
@@ -8,6 +8,7 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Illuminate\Http\Resources\MissingValue;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
use function app;
|
||||
|
||||
@@ -18,6 +19,7 @@ class EventResource extends JsonResource
|
||||
$tenantId = $request->attributes->get('tenant_id');
|
||||
$showSensitive = $this->tenant_id === $tenantId;
|
||||
$settings = is_array($this->settings) ? $this->settings : [];
|
||||
$settings = $this->attachWatermarkAssetUrl($settings);
|
||||
$eventPackage = null;
|
||||
$memberPermissions = null;
|
||||
|
||||
@@ -97,6 +99,64 @@ class EventResource extends JsonResource
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $settings
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
protected function attachWatermarkAssetUrl(array $settings): array
|
||||
{
|
||||
$watermark = Arr::get($settings, 'watermark');
|
||||
$base = config('watermark.base', []);
|
||||
$base = is_array($base) ? $base : [];
|
||||
|
||||
if (! is_array($watermark)) {
|
||||
$watermark = [];
|
||||
}
|
||||
|
||||
$mode = $watermark['mode'] ?? null;
|
||||
if (! is_string($mode) || $mode === '') {
|
||||
$mode = 'base';
|
||||
$watermark['mode'] = $mode;
|
||||
}
|
||||
|
||||
if ($mode !== 'off') {
|
||||
foreach (['position', 'opacity', 'scale', 'padding', 'offset_x', 'offset_y'] as $key) {
|
||||
if (! array_key_exists($key, $watermark) && array_key_exists($key, $base)) {
|
||||
$watermark[$key] = $base[$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$asset = $watermark['asset'] ?? null;
|
||||
if ((! is_string($asset) || $asset === '') && $mode !== 'off') {
|
||||
$asset = $base['asset'] ?? null;
|
||||
if (is_string($asset) && $asset !== '') {
|
||||
$watermark['asset'] = $asset;
|
||||
}
|
||||
}
|
||||
|
||||
if (! is_string($asset) || $asset === '') {
|
||||
$settings['watermark'] = $watermark;
|
||||
|
||||
return $settings;
|
||||
}
|
||||
|
||||
$normalized = ltrim($asset, '/');
|
||||
if (str_starts_with($normalized, 'storage/')) {
|
||||
$normalized = substr($normalized, strlen('storage/'));
|
||||
}
|
||||
|
||||
$watermark['asset_url'] = URL::temporarySignedRoute(
|
||||
'api.v1.branding.asset',
|
||||
now()->addSeconds(3600),
|
||||
['path' => $normalized]
|
||||
);
|
||||
|
||||
$settings['watermark'] = $watermark;
|
||||
|
||||
return $settings;
|
||||
}
|
||||
|
||||
protected function formatAddons(?\App\Models\EventPackage $eventPackage): array
|
||||
{
|
||||
if (! $eventPackage) {
|
||||
|
||||
Reference in New Issue
Block a user