Скрыть поля модели на основе разрешений пользователя

Допустим, user_one имеет разрешение на просмотр purchase_priceи user_two не имеет этого разрешения.

Я хочу динамически скрывать purchase_price на основании разрешения пользователя.

Что я сделал

Я уже управлял разрешениями, используя пакет spatie.

Что я пробовал и искал

  • Я обнаружил, что я мог бы использовать boot() функционировать саму модель, чтобы скрыть определенные поля, но я не знаю как, или это лучшее решение, и это static function,

  • Я мог бы сделать scope обрабатывать то, что использует ответ API if 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.
    }
Другие вопросы по тегам