我如何限制未在 laravel 中批准的供应商的路线?

how can I restricted route for vendor who is not approved in laravel?

我的 laravel 电子商务中有 3 种类型的用户管理员、供应商、客户。

现在我必须限制那些未经管理员批准的供应商的路线。 请问有人可以告诉我过程吗?

这里是 users 和 shops 这两个表。

用户具有这些属性

id, name, password, email, phone

商店有

shop_name, address, shop_phone, owner_id (this is a foreign key of users.id), is_approved(bool)

现在我需要知道如何限制所有未经批准的授权路线意味着 is_approved==0 商店。

谁能帮帮我?

创建一个中间件:

php artisan make:middleware CheckIsApproved

将在 app/Http/Middleware/CheckIsApproved.php fille 中创建一个新的中间件 class。

然后在中间的handle方法中,可以做校验:

public function handle ($request, Closure $next)
{
    if (auth()->user()->shop->is_approved) {
        return $next($request);
    }

    return back()->with('error', 'Unauthorized');
}

(您可能需要根据关系自定义if中的条件)

在文件app/Http/Kernel.php中,注册中间件:搜索$routeMiddleware属性并添加:

protected $routeMiddleware = [
    //...
    'isApproved' => \App\Http\Middleware\CheckIsApproved::class,
];

然后,在你的路由定义中,你可以指定中间件:

Route::get('/some-route', 'SomeRouteController@show')->middleware('isApproved');

查看 docs 了解更多信息