Возможно ли использование Laratrust совместно с политиками Laravel, или это взаимоисключающие понятия?
Задача в том, чтобы реализовать роли и группы пользователей. Необходимо для определения прав на доступы к разделам и совершение определенных действий. Также, группа (или роль) могут влиять на отображение различной информации.
Изначально хотел задействовать Laratrust для этого, но встроенные политики как-то привычнее.
Было бы намного удобнее проверять наличие роли в политике, но трейт laratrust перегружает метод can() в модели User.
Подскажите, как вы решаете подобные проблемы с разграничением прав доступа? (:
а чем bouncer лучше? если кратко
при беглом просмотре документации сложилось впечатление, что для проверки прав мне нужно использовать фасад Bouncer, или я не прав?
fLipE, нет, не нужно) У трейтов, которые применяются к модели, есть нужные методы, типа ->can(). Почему bouncer - потому что у него есть кэширование, потому что позволяет использовать свои модели НЕ наследуя его (трейтом, это важно для меня), потому что он почти что заставляет использовать ->can() вместо isRole(), потому что не использует конфиги для конфигурации ролей и так далее. В общем это полноценный ACL от начала и до конца, в котором есть все из коробки, и каждый апдейт - продуманый и обсужденный с community. Я ему доверяю, и мне он нравится - вот tl;dr =)
Alex Wells, спасибо, опробую как-нибудь)
но laratrust тоже может в кэш, и наследовать его модели не обязательно: создаются 3 модели: разрешение, роль, команда, а в User просто подключается трейт, который содержит ->can(), ->hasRole() и прочее. И конфиги используются для указания используемых моделей, таблиц, кэша, и прочих настроек. Так что дело вкуса, наверное)
use Illuminate\Foundation\Auth\Access\Authorizable;
use Laratrust\Traits\LaratrustUserTrait;
use LaratrustUserTrait;
use Authorizable {
Authorizable::can insteadof LaratrustUserTrait;
LaratrustUserTrait::can as laratrustCan;
}