validate([ 'file' => 'required|file|mimes:pdf,docx,jpg,png|max:10240', // 10MB limit 'description' => 'nullable|string|max:255', ]); if ($request->hasFile('file')) { $path = $request->file('file')->store('contracts/' . $contract->id, 'public'); $contract->documents()->create([ 'filename' => $request->file('file')->getClientOriginalName(), 'path' => $path, 'mime_type' => $request->file('file')->getMimeType(), 'size' => $request->file('file')->getSize(), 'description' => $request->input('description'), 'uploaded_by' => auth()->id(), ]); return back()->with('success', 'Document uploaded successfully.'); } return back()->with('error', 'No file uploaded.'); } /** * Delete a document. */ public function destroy(Document $document) { // Check permission (manager or admin or uploader?) if (!auth()->user()->isManager() && auth()->id() !== $document->uploaded_by) { abort(403); } // Delete from storage Storage::disk('public')->delete($document->path); $document->delete(); return back()->with('success', 'Document deleted.'); } }