validate([ 'title' => 'required|string|max:255', 'description' => 'nullable|string', 'priority' => 'sometimes|in:low,medium,high,urgent', ]); $data['description'] = $this->sanitizeDescription($data['description'] ?? null); $data['priority'] = $data['priority'] ?? 'medium'; $project->tasks()->create($data); return redirect()->back(); } public function update(Request $request, Task $task) { $data = $request->validate([ 'title' => 'sometimes|string|max:255', 'description' => 'nullable|string', 'status' => 'sometimes|in:todo,in_progress,blocked,done', 'priority' => 'sometimes|in:low,medium,high,urgent', ]); if (array_key_exists('description', $data)) { $data['description'] = $this->sanitizeDescription($data['description']); } $task->update($data); return redirect()->back(); } public function destroy(Task $task) { $task->delete(); return redirect()->back(); } private function sanitizeDescription(?string $description): ?string { if ($description === null) { return null; } $allowedTags = '

    1. '; $description = strip_tags($description, $allowedTags); return preg_replace( '/<(br|b|strong|i|em|u|p|ul|ol|li)\b[^>]*>/i', '<$1>', $description ); } }