【问题标题】:Laravel if model has attribute check against authLaravel 如果模型具有针对 auth 的属性检查
【发布时间】:2018-01-05 01:02:33
【问题描述】:
我有一个 Laravel 5.4 应用程序,其中 auth 用户属于一家公司,
这是在user->company_id 中设置的。
其他一些模型也有 company_id,因此来自同一公司的不同用户可以访问/查看/编辑这些记录。
在我的路由中,我目前使用资源路由,那么如果身份验证用户可以从相应的控制器访问索引、show、edit、update 和 destroy 方法,我如何以一般方式检查?
【问题讨论】:
标签:
php
laravel
authentication
laravel-5.4
【解决方案1】:
您可以在所有带有 company_id 的模型中执行一个方法:
public function isOwnedBy($companyId)
{
return $this->company_id == $companyId ? true : false;
}
然后,无论何时您想要编辑、显示...该模型,您只需在执行此操作之前调用此方法。假设您有一个包含“company_id”字段的页面。
$page = Page::first(); // just some random page
if(!$page->isOwnedBy(\Auth::user()->company_id))
// throw an exception or do something that the user can't continue