diff --git a/app/Http/Controllers/PublicUserProfileController.php b/app/Http/Controllers/PublicUserProfileController.php new file mode 100644 index 0000000..924ea9e --- /dev/null +++ b/app/Http/Controllers/PublicUserProfileController.php @@ -0,0 +1,43 @@ +mealPosts() + ->where('visibility', MealPostVisibility::Public->value) + ->with('user:id,name,avatar_url,account_verified_at') + ->latest('eaten_at') + ->limit(18) + ->get(); + + return response()->json([ + 'data' => [ + 'user' => [ + 'id' => $user->id, + 'name' => $user->name, + 'bio' => $user->bio, + 'avatarUrl' => $user->avatar_url + ? asset(Storage::url($user->avatar_url)) + : null, + 'accountVerified' => $user->account_verified_at !== null, + ], + 'stats' => [ + 'mealsCount' => $user->mealPosts() + ->where('visibility', MealPostVisibility::Public->value) + ->count(), + ], + 'meals' => MealPostsResource::collection($meals)->resolve($request), + ], + ]); + } +} diff --git a/config/deploy.yml b/config/deploy.yml index 2830135..12b9fc6 100644 --- a/config/deploy.yml +++ b/config/deploy.yml @@ -57,7 +57,7 @@ env: clear: APP_LOCALE: fr APP_ENV: production - APP_DEBUG: "true" + APP_DEBUG: "false" APP_URL: https://bemeal.leonmorival.com SERVER_NAME: ":80" APP_RUNTIME: "Laravel\\FrankenPHP\\Runtime" diff --git a/routes/api.php b/routes/api.php index 7a8f092..d24c710 100644 --- a/routes/api.php +++ b/routes/api.php @@ -5,6 +5,7 @@ use App\Http\Controllers\DeviceTokenController; use App\Http\Controllers\MealImageAnalysisController; use App\Http\Controllers\MealPostController; use App\Http\Controllers\PostReviewsController; +use App\Http\Controllers\PublicUserProfileController; use App\Http\Controllers\StravaController; use App\Http\Controllers\WorkoutSessionController; use Illuminate\Support\Facades\Route; @@ -53,6 +54,7 @@ Route::middleware(['auth:sanctum', 'verified'])->group(function (): void { // Meals Route::middleware(['auth:sanctum', 'verified'])->group(function (): void { + Route::get('users/{user}', [PublicUserProfileController::class, 'show'])->name('users.show'); 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']);