user(); $post = Post::findOrFail($id); Gate::authorize('report', $post); $request->validate([ 'reason' => ['required', 'string', 'max:64'], 'message' => ['nullable', 'string', 'max:1000'], ]); // Unique report per user+post $existing = PostReport::where('post_id', $post->id) ->where('reporter_user_id', $user->id) ->exists(); if ($existing) { return response()->json(['message' => 'You have already reported this post.'], 409); } PostReport::create([ 'post_id' => $post->id, 'reporter_user_id' => $user->id, 'reason' => $request->input('reason'), 'message' => $request->input('message'), 'status' => 'open', ]); return response()->json(['message' => 'Report submitted. Thank you for helping keep Skinbase safe.'], 201); } }