$data * @return array */ protected function mutateFormDataBeforeCreate(array $data): array { $disk = config('larablog.attachments_disk', 'attachments'); $path = $data['upload'] ?? null; unset($data['upload']); if (! is_string($path) || $path === '') { throw new \InvalidArgumentException(__('admin.messages.upload_required')); } $storage = Storage::disk($disk); $mime = method_exists($storage, 'mimeType') ? ($storage->mimeType($path) ?: null) : null; $allowed = config('larablog.allowed_attachment_mimes', []); if (is_string($mime) && $allowed !== [] && ! in_array($mime, $allowed, true)) { $storage->delete($path); throw new \InvalidArgumentException(__('admin.messages.mime_not_allowed', ['mime' => $mime])); } $data['disk'] = $disk; $data['path'] = $path; $data['filename'] = $data['filename'] ?: basename($path); $data['mime'] = $mime; $data['size'] = $storage->size($path) ?: 0; $data['checksum'] = hash('sha256', (string) $storage->get($path)); $data['synced_at'] = now(); $data['visibility'] = $data['visibility'] ?? 'public'; $data['downloads'] = (int) ($data['downloads'] ?? 0); return $data; } }