【发布时间】:2019-06-22 16:15:27
【问题描述】:
我们正在开发一个基于 Laravel Spark 的应用程序。作为其中的一部分,我们希望将资源与特定团队联系起来。
我知道我们可以添加一个全局范围,例如:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class TeamScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function apply(Builder $builder, Model $model)
{
$builder->where('team_id', '=',Auth()->user()->currentTeam->id );
}
}
但根据文档,我们必须将其添加到我们想要限制的每个模型中,如下所示:
protected static function boot()
{
parent::boot();
static::addGlobalScope(new TeamScope);
}
我的问题是有可能创建未来的模型而忘记应用此代码。哪个会给我们带来安全漏洞?
有什么方法可以全面执行范围?
【问题讨论】:
标签: laravel eloquent laravel-spark