validateAccess($assignment, $code); $pdfUrl = route('assignments.pdf.file', [ 'assignment' => $assignment->id, 'code' => $code, ]); return view('assignments.pdf-viewer', [ 'assignment' => $assignment, 'pdfUrl' => $pdfUrl, ]); } public function file(Request $request, Assegnazione $assignment, string $code): StreamedResponse { $this->validateAccess($assignment, $code); $pdfPath = $assignment->territorio?->pdf_path; abort_unless($pdfPath && Storage::disk('public')->exists($pdfPath), 404); return Storage::disk('public')->response( $pdfPath, 'territorio-' . $assignment->territorio?->numero . '.pdf', [ 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="territorio-' . $assignment->territorio?->numero . '.pdf"', ] ); } protected function validateAccess(Assegnazione $assignment, string $code): void { abort_unless($assignment->pdf_access_code && hash_equals($assignment->pdf_access_code, $code), 404); abort_unless($assignment->is_aperta, 403); abort_unless($assignment->territorio?->pdf_path, 404); } }