@kaxa3201

Как скрывать поля api в зависимости от разрешения пользователя?

Подскажите лучшие практики.
Есть rest api по которой можно получить products с полями ['name' =>'test', 'price'=>22], нужно в зависимости от permissions пользователя скрывать поля, допустим у пользователя который запрашивает список продуктов нет разрешения 'products.price.view' и тогда нужно скрыть в ответе поле 'price'.

Знаю что можно скрывать поля в Resource и проверять каждое поле на наличие пермиссии пользователя, но вот как хранить маппинг полей с пермиссиями не могу понять.
Подскажите пожалуйста как лучше сделать, может быть я вообще не в ту сторону смотрю и можно сделать проще и универсальнее?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Используйте API-Resources
У вас в ресурсе будет реквест - из которого вы сможете достать нужного юзера
После чего в методе toArray() через функцию when устанавливаете нужные поля, например:
'secret' => $this->when($request->user()->isAdmin(), function () {
    return 'secret-value';
}),


Для проверки прав можно использовать $request->user()->can(...)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы