【发布时间】:2020-02-05 05:23:03
【问题描述】:
我目前正在向 Laravel 应用程序添加权限/角色/授权。
在应用程序的数据库中是用户、公司和产品。公司有很多用户,一个产品属于一个公司。
现在我想授权公司用户为他们的公司创建产品。
在我的 ProductController.php 我有这样的东西:
public function create(Request $request)
{
$company = Company::findOrFail($request->get('company_id'));
return view('product.create', compact('company');
}
一种选择是在获得公司后使用Gate::authorize() 并将$company 传递给授权方法。
问题:但是如果我不想使用Gate::authorize(),我该如何解决这个问题。如果我想使用policies?
另一个问题:我看到了几种授权方式:Gate::authorize()、policies、StoreProduct 的authorize()、...
我应该使用哪一个?例如,如果我使用 policies,我是否应该始终执行 StoreProduct 的 authorize() 事件?
【问题讨论】:
-
用户和产品是否都属于一家公司?
-
@rakete 你可以创建
permission像manage product或个人像create product和update product等用户Request类来检查用户是否有权限。如果对这种方法感兴趣,请告诉我,我会添加一些示例代码 -
@Bryan 公司有很多用户。产品有一家公司。
-
@MikeRoss 嗯,我已经创建了权限。检查权限不是问题。问题是,决定用户是否被授权的模型(用户的公司)将作为 company_id 传递。
-
如果您的用户只属于一家公司,我将依赖关系(假设您在
User模型中有一个 belongsTo):$company = $request->user()->company;
标签: laravel laravel-5 laravel-authorization