问题描述
我的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以获得更多见识