如何限制来自 pivot table 的访问? Laravel
How to limit access from pivot table? Laravel
我有表:
用户
- id
- 姓名
公司
- id
- 姓名
company_user
- company_id
- user_id
表具有 多对多 关系。
因为这对我来说关系很复杂,当用户可以看到由该用户创建的公司时,我找不到如何设置此限制的方法。 (可能经验不足)
现在我有了这个,但是用户可以看到任何公司
公司控制人:
public function show($company_id)
{
$company = Company::where('id', $company_id)->firstOrFail();
return view('company.settings', compact('company'));
}
所以请提示我如何让用户只能看到该用户创建的公司。
由于是多对多关系,可以将一个公司映射到多个用户,也可以将一个用户映射到多个公司。检查您是否错误地将公司分配给许多用户
上面的代码也可以这样写
public function show($company_id)
{
$company = Company::findOrFail($company_id);
return view('company.settings', compact('company'));
}
你可以这样做:
public function show($company_id)
{
$company = auth()->user()->companies()->findOrFail($company_id);
return view('company.settings', compact('company'));
}
它将公司范围限定为当前登录的用户(通过 User
模型上的多对多关系)。如果找到 none,它将 return 404.
我有表:
用户
- id
- 姓名
公司
- id
- 姓名
company_user
- company_id
- user_id
表具有 多对多 关系。
因为这对我来说关系很复杂,当用户可以看到由该用户创建的公司时,我找不到如何设置此限制的方法。 (可能经验不足)
现在我有了这个,但是用户可以看到任何公司
公司控制人:
public function show($company_id)
{
$company = Company::where('id', $company_id)->firstOrFail();
return view('company.settings', compact('company'));
}
所以请提示我如何让用户只能看到该用户创建的公司。
由于是多对多关系,可以将一个公司映射到多个用户,也可以将一个用户映射到多个公司。检查您是否错误地将公司分配给许多用户
上面的代码也可以这样写
public function show($company_id)
{
$company = Company::findOrFail($company_id);
return view('company.settings', compact('company'));
}
你可以这样做:
public function show($company_id)
{
$company = auth()->user()->companies()->findOrFail($company_id);
return view('company.settings', compact('company'));
}
它将公司范围限定为当前登录的用户(通过 User
模型上的多对多关系)。如果找到 none,它将 return 404.