В моем проекте Laravel я столкнулся со следующей проблемой: в настоящее время, чтобы сделать разницу между клиентами и администраторами, я использую функцию загрузки в каждой модели, чтобы убедиться, что результаты фильтруются по customer_id, как это
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
if (!Auth::user()->isAdministrator()) {
static::addGlobalScope(
'customer', function (Builder $builder) {
$builder->where('customer_id', '=', Auth::user()->customer_id);
}
);
}
}
Администратор может видеть все, клиенты могут видеть только свои собственные записи.
Это означает, что когда я забываю добавить это в модель, все записи видны клиенту, а не только один с внешним ключом customer_id. Есть ли простой способ изменить это? Отфильтруйте все запросы по умолчанию для customer_id и удалите область, когда администратор намного безопаснее.
Как мы должны решить эту проблему в Laravel?