Php 如何为未在laravel获得批准的供应商提供限制路线?
在我的laravel电子商务中,我有三种类型的用户:管理员、供应商、客户 现在,我必须限制那些供应商谁没有得到管理员批准的路线。 有人能告诉我这个过程吗 这是用户和商店的两张桌子 用户具有这些属性Php 如何为未在laravel获得批准的供应商提供限制路线?,php,laravel,eloquent,laravel-authentication,Php,Laravel,Eloquent,Laravel Authentication,在我的laravel电子商务中,我有三种类型的用户:管理员、供应商、客户 现在,我必须限制那些供应商谁没有得到管理员批准的路线。 有人能告诉我这个过程吗 这是用户和商店的两张桌子 用户具有这些属性 id, name, password, email, phone 商店也有 shop_name, address, shop_phone, owner_id (this is a foreign key of users.id), is_approved(bool) 这里给出了用户的一个店铺关系
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
for shop
有人能帮我吗?创建一个中间件:
php artisan make:middleware CheckIsApproved
Route::get('/some-route', 'SomeRouteController@show')->middleware('isApproved');
将在app/Http/middleware/CheckIsApproved.php
fille中创建一个新的中间件类
然后在中间的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
中,注册中间件:search$routeMiddleware
属性并添加:
protected $routeMiddleware = [
//...
'isApproved' => \App\Http\Middleware\CheckIsApproved::class,
];
然后,在路由定义中,可以指定中间件:
php artisan make:middleware CheckIsApproved
Route::get('/some-route', 'SomeRouteController@show')->middleware('isApproved');
查看以获取更多信息您可以定义自己的中间件,然后将其分配给auth等路由。请看:请包括路由,因为没有em很难理解您要做什么。如果用户有两个商店,会发生什么?我想在构造中添加一个中间件。如果可能是供应商,但用户()->shops()->被激活==0,则返回登录页面。下一个就不去了。比如handle()。有可能吗?是的,有可能,但需要再次使用类似的方法。而不是这个
$this->middleware('newMiddleware')代码>使用这个:$this->中间件(函数($request,$next){/…})代码>参见本节:@Iagbox:不完全正确。这里,User
模型上的shop
方法应该定义User
和shop
模型之间的关系。你是对的。我的意思是auth()->user()->shop->已经批准了
。我已经更正了答案。很好,只是停止了下一个问题,因为他们无法解决一些错误:)谢谢你为他们的问题提供了答案顺便说一句,非常感谢你的回答,兄弟。这是我的工作。非常感谢。:)