Задать вопрос
@kaxa3201

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

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

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


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

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

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