<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Middleware genérico de rol. Uso: ->middleware('role:super_admin')
 * o role:super_admin,company_admin para múltiples.
 *
 * Nota: spatie/laravel-permission ya provee uno propio (`role:`); este es
 * una versión liviana que también devuelve 403 limpio en JSON. Si prefieres
 * usar el de Spatie, registra ese alias en bootstrap/app.php en su lugar.
 */
class RoleMiddleware
{
    public function handle(Request $request, Closure $next, string ...$roles): Response
    {
        $user = $request->user();

        if (! $user) {
            abort(401);
        }

        if (! $user->hasAnyRole($roles)) {
            if ($request->expectsJson()) {
                abort(403, 'No tienes permiso para acceder a esta sección.');
            }
            abort(403);
        }

        return $next($request);
    }
}
