hasAnyRole(['super-admin', 'admin', 'amministratore', 'collaboratore'])) { abort(403); } $ticket = $attachment->ticket; if (! $ticket) { abort(404); } $stabileId = StabileContext::resolveActiveStabileId($user); if (! $stabileId || (int) $ticket->stabile_id !== (int) $stabileId) { abort(403); } $disk = Storage::disk('public'); $path = (string) $attachment->file_path; if (! $disk->exists($path)) { abort(404); } $absolutePath = $disk->path($path); $mime = (string) ($attachment->mime_type ?: $disk->mimeType($path) ?: 'application/octet-stream'); return response()->file($absolutePath, [ 'Content-Type' => $mime, 'Cache-Control' => 'private, max-age=300', 'Content-Disposition' => 'inline; filename="' . addslashes((string) ($attachment->original_file_name ?: basename($path))) . '"', ]); } }