<?php

namespace App\Http\Middleware;

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

class EnsureUserVendorAccess
{
    /**
     * اطمینان از اینکه کاربر فقط به داده‌های وندور خودش دسترسی دارد،
     * مگر اینکه سوپرادمین (view_vendors) باشد.
     */
    public function handle(Request $request, Closure $next): Response
    {
        $user = $request->user();
        if (! $user) {
            return $next($request);
        }

        if (! app()->bound('vendor')) {
            return $next($request);
        }

        $vendor = app('vendor');
        if ($user->vendor_id === $vendor->id) {
            return $next($request);
        }

        if ($user->hasPermission('view_vendors')) {
            return $next($request);
        }

        abort(403, 'دسترسی به پنل این سازمان برای شما مجاز نیست.');
    }
}
