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

问题描述

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

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

这是用户和商店这两个表。

用户具有这些属性

id,name,password,email,phone

商店都有

shop_name,address,shop_phone,owner_id (this is a foreign key of users.id),is_approved(bool)
  • 此处具有用户hasOne商店关系。

现在,我需要知道如何限制商店中所有未经批准的授权途径is_approved==0

有人可以帮助我吗?

解决方法

创建中间件:

php artisan make:middleware CheckIsApproved

将在app/Http/Middleware/CheckIsApproved.php填充中创建一个新的中间件类。

然后在中间的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以获得更多见识

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...