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
+10 -3
View File
@@ -6,6 +6,7 @@ use App\Http\Controllers\MealImageAnalysisController;
use App\Http\Controllers\MealPostController;
use App\Http\Controllers\PostReviewsController;
use App\Http\Controllers\PublicUserProfileController;
use App\Http\Controllers\ReportController;
use App\Http\Controllers\StravaController;
use App\Http\Controllers\WorkoutSessionController;
use Illuminate\Support\Facades\Route;
@@ -40,14 +41,14 @@ Route::prefix('auth')->group(function (): void {
Route::get('/health', function () {
return response()->json(['status' => 'ok']);
});
Route::middleware(['auth:sanctum', 'verified'])->group(function (): void {
Route::middleware(['auth:sanctum', 'verified', 'not_suspended'])->group(function (): void {
Route::post('device-tokens', [DeviceTokenController::class, 'store']);
Route::delete('device-tokens', [DeviceTokenController::class, 'destroy']);
Route::get('test-notifs', [DeviceTokenController::class, 'notifs']);
});
// Workouts
Route::middleware(['auth:sanctum', 'verified'])->group(function (): void {
Route::middleware(['auth:sanctum', 'verified', 'not_suspended'])->group(function (): void {
Route::get('workouts/calendar', [WorkoutSessionController::class, 'calendar'])->name('workouts.calendar');
Route::get('workouts', [WorkoutSessionController::class, 'index'])->name('workouts.index');
Route::post('workouts', [WorkoutSessionController::class, 'store'])->name('workouts.store');
@@ -59,14 +60,20 @@ Route::middleware(['auth:sanctum', 'verified'])->group(function (): void {
});
// Meals
Route::middleware(['auth:sanctum', 'verified'])->group(function (): void {
Route::middleware(['auth:sanctum', 'verified', 'not_suspended'])->group(function (): void {
Route::get('users/{user}', [PublicUserProfileController::class, 'show'])->name('users.show');
Route::post('users/{user}/reports', [ReportController::class, 'storeUser'])
->middleware('throttle:10,1')
->name('users.reports.store');
Route::get('me/meal-posts', [MealPostController::class, 'mine'])->name('meal-posts.mine');
Route::get('meal-posts/stats', [MealPostController::class, 'stats']);
Route::get('meal-posts/calendar', [MealPostController::class, 'calendar']);
Route::post('meal-posts/analyze-image', [MealImageAnalysisController::class, 'store']);
Route::post('meal-posts/{mealPost}/like', [MealPostController::class, 'like'])->name('meal-posts.like');
Route::delete('meal-posts/{mealPost}/like', [MealPostController::class, 'unlike'])->name('meal-posts.unlike');
Route::post('meal-posts/{mealPost}/reports', [ReportController::class, 'storeMealPost'])
->middleware('throttle:10,1')
->name('meal-posts.reports.store');
Route::get('meal-posts/{mealPost}/reviews', [PostReviewsController::class, 'index'])->name('meal-posts.reviews.index');
Route::post('meal-posts/{mealPost}/reviews', [PostReviewsController::class, 'store'])->name('meal-posts.reviews.store');
Route::get('post-reviews/{postReview}', [PostReviewsController::class, 'show'])->name('post-reviews.show');