@evgenin

Как сделать универсальную Policy Laravel?

Подскажите как сделать универсальную Policy, чтобы ограничивать любую модель, не создавая разные Политики для каждой модели, чтобы учитывались ограничение на create из списка

Пример:
Есть массив с лимитами, по нему читать модель и подстраивать Политику
array(
'Post' => 30 //  30 записей максимум
'Products' => 100 // 100 записей максимум
);


Конечный результат должен получиться:
UniversalPolicy

вместо
PostPolicy
ProductsPolicy
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
@jazzus
C помощью Gate. Прописать нужное правило в AuthServiceProvider и вызывать через Gate::allows. Но я бы так не делал. Т.к. скорее всего политики понадобятся и смысла дублировать проверки нет. Или логика для определенных моделей поменяется и придется переписывать все проверки вместо исправления одной политики. Ну и проверки политик по-интереснее выглядят. Поэтому лучше политики, без UniversalPolicy разумеется, а как в Ларавел написано - отдельно для каждой модели. Ибо в этом их смысл впринципе. А исходную инфу убрать в конфиги (цифры или что там у тебя). Можно и код проверки убрать в свой класс и вызывать в политиках, но это если там не $user->posts()->count() < config('post.limit') т.к. это не дублирование кода
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы