feat: moderation

This commit is contained in:
2026-05-22 11:56:17 +02:00
parent f5b460c650
commit 1c472e46db
43 changed files with 1836 additions and 3 deletions
@@ -15,6 +15,8 @@ class PostReviewsController extends Controller
{
public function index(Request $request, MealPosts $mealPost): AnonymousResourceCollection
{
$this->abortIfUnavailable($mealPost);
$perPage = max(1, min($request->integer('per_page', 15), 100));
$reviews = $mealPost->reviews()
@@ -28,6 +30,8 @@ class PostReviewsController extends Controller
public function store(PostReviewsRequest $request, MealPosts $mealPost): JsonResponse
{
$this->abortIfUnavailable($mealPost);
$userId = $request->user()->getKey();
abort_if(
@@ -52,6 +56,9 @@ class PostReviewsController extends Controller
public function show(PostReviews $postReview): PostReviewsResource
{
$postReview->loadMissing('mealPost.user');
$this->abortIfUnavailable($postReview->mealPost);
return new PostReviewsResource($postReview->loadMissing(
'mealPost.ingredients',
'mealPost.user:id,name,avatar_url',
@@ -82,4 +89,12 @@ class PostReviewsController extends Controller
abort_unless($request->user(), 401);
abort_unless($postReview->user_id === $request->user()->getKey(), 404);
}
private function abortIfUnavailable(MealPosts $mealPost): void
{
abort_if(
$mealPost->isHidden() || $mealPost->user()->whereNotNull('suspended_at')->exists(),
404,
);
}
}