Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
ensureAccess($request, $caseRecord);
$data = $request->validate([
'documents' => ['required', 'array', 'max:10'],
'documents.*' => ['file', 'max:15360', 'mimes:pdf,jpg,jpeg,png,webp,doc,docx,txt,csv'],
'category' => ['required', 'string', 'max:60'],
]);
foreach ($data['documents'] as $file) {
$path = $file->store("cases/{$caseRecord->id}", 'local');
$absolutePath = Storage::disk('local')->path($path);
$caseRecord->documents()->create([
'uploaded_by' => $request->user()->id,
'original_name' => $file->getClientOriginalName(),
'path' => $path,
'disk' => 'local',
'mime_type' => $file->getMimeType(),
'size' => $file->getSize(),
'category' => $data['category'],
'extracted_text' => $extractor->extract($absolutePath, $file->getMimeType()),
]);
}
return back()->with('success', count($data['documents']).' document(s) uploaded securely.');
}
public function download(Request $request, CaseDocument $document)
{
$this->ensureAccess($request, $document->caseRecord);
return Storage::disk($document->disk)->download($document->path, $document->original_name);
}
public function destroy(Request $request, CaseDocument $document)
{
$this->ensureAccess($request, $document->caseRecord);
Storage::disk($document->disk)->delete($document->path);
$document->delete();
return back()->with('success', 'Document removed.');
}
private function ensureAccess(Request $request, CaseRecord $caseRecord): void
{
abort_unless($request->user()->isAdmin() || $caseRecord->user_id === $request->user()->id, 403);
}
}