Скрыть поля модели на основе разрешений пользователя - PullRequest
0 голосов
/ 27 июня 2019

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

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

Что я сделал

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

То, что я пробовал и искал

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

  • Я мог бы сделать scope для обработки ответа APIиспользуя if statements и select(), но я не думаю, что это тоже хорошее решение.

  • Также я мог бы использовать Laravel resources.

1 Ответ

0 голосов
/ 27 июня 2019

Вы можете создавать политики и после этого использовать can() в контроллере и @can в блейд-файле для ролевых фильтров. Нажмите здесь для получения дополнительной информации.

if ($this->getAuthorisedApp()->cannot('purchase_price'))
    {
        $this->setHidden(['purchase_price']);

        //  Or, $this->setVisible(['example_key']), if this works better for you.
    }
...