authorizeUpload($upload, $request); return response()->json($upload); } public function destroy(Upload $upload, Request $request, GoogleDriveService $googleDrive): JsonResponse { $this->authorizeUpload($upload, $request); if ($upload->google_drive_file_id) { try { $googleDrive->deleteFile($request->user(), $upload->google_drive_file_id); } catch (\Throwable) { // Continue to delete record even if Drive delete fails } } $upload->delete(); return response()->json(null, 204); } public function downloadUrl(Upload $upload, Request $request, GoogleDriveService $googleDrive): JsonResponse { $this->authorizeUpload($upload, $request); if (! $upload->google_drive_file_id) { return response()->json(['message' => 'File not yet available'], 404); } $url = $googleDrive->getFileLink($request->user(), $upload->google_drive_file_id); return response()->json(['url' => $url]); } protected function authorizeUpload(Upload $upload, Request $request): void { if ($upload->event->user_id !== $request->user()->id) { abort(404); } } }