Использовать глобальную область видимости по умолчанию и удалять при администрировании - PullRequest
0 голосов
/ 18 марта 2020

В моем проекте 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?

...