<?php

declare(strict_types=1);

namespace App\Http\Middleware;

use App\Enums\UserAccountStatus;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Règle 5 (cahier des charges) : seuls les comptes validés publient ou répondent.
 * À appliquer sur les routes API qui créent des demandes, propositions, messages, etc.
 */
class EnsureUserIsApproved
{
    public function handle(Request $request, Closure $next): Response
    {
        $user = $request->user();

        if ($user === null || $user->status !== UserAccountStatus::Approved) {
            return response()->json([
                'message' => 'Votre compte doit être approuvé pour effectuer cette action.',
            ], 403);
        }

        return $next($request);
    }
}
