Скрыть поля модели на основе разрешений пользователя
Допустим, user_one имеет разрешение на просмотр purchase_price
и user_two не имеет этого разрешения.
Я хочу динамически скрывать purchase_price
на основании разрешения пользователя.
Что я сделал
Я уже управлял разрешениями, используя пакет spatie.
Что я пробовал и искал
Я обнаружил, что я мог бы использовать
boot()
функционировать саму модель, чтобы скрыть определенные поля, но я не знаю как, или это лучшее решение, и этоstatic function
,Я мог бы сделать
scope
обрабатывать то, что использует ответ APIif statements
а такжеselect()
но я не думаю, что это тоже хорошее решение.Также я мог бы использовать
Laravel resources
,
1 ответ
Вы можете создавать политики и после этого использовать can()
в контроллере и @can
в блейд-файле для ролевых фильтров. Нажмите здесь для получения дополнительной информации.
if ($this->getAuthorisedApp()->cannot('purchase_price'))
{
$this->setHidden(['purchase_price']);
// Or, $this->setVisible(['example_key']), if this works better for you.
}