json($r->user()->projects()->orderBy('name')->get()); } public function store(Request $r): JsonResponse { $data = $r->validate([ 'name' => 'required|string|max:80', 'color' => 'nullable|string|max:7', 'icon' => 'nullable|string|max:40', ]); return response()->json( $r->user()->projects()->create($data + ['color' => $data['color'] ?? '#6366f1']), 201 ); } public function update(Request $r, Project $project): JsonResponse { abort_unless($project->user_id === $r->user()->id, 403); $data = $r->validate([ 'name' => 'sometimes|required|string|max:80', 'color' => 'nullable|string|max:7', 'icon' => 'nullable|string|max:40', ]); $project->update($data); return response()->json($project); } public function destroy(Request $r, Project $project): JsonResponse { abort_unless($project->user_id === $r->user()->id, 403); $project->delete(); return response()->json(['ok' => true]); } }