В каких случаях использовать политики и гейты в Laravel?

Здравствуйте. Учу Laravel и добрался до политик и гейтов, и никак не могу понять в чем их смысл.

У меня есть метод удаления коммента, в котором проверяю id аутентифицированного пользователя с id того, кто этот коммент оставил.
public function delete($id) {
    $comment = Comment::find($id);
    if(Auth::user()->id == $comment->user_id) {
        $comment->delete();
    } 
}


Как я понял политики и гейты и служат для того, что бы эту проверку в котроллере так не писать?
  • Вопрос задан
  • 316 просмотров
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Как я понял политики и гейты и служат для того, что бы эту проверку в котроллере так не писать?
Да. Проверка может быть сложной. Она может вызываться в пяти разных местах. Политики — наглядный пример принципа DRY.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
Политики Лары хороши всем, кроме того, что отсутствует понятие "роль", т.е. получается что все политики будут применяться ко всем пользователям без исключений. Но в реальных системах одним пользователям нужно что-то разрешить, а другим - запретить и без ролей становится грустно...
После появления в Ларе политик и гейтов я написал небольшой модуль h-rbac - обертку над гейтами, который позволяет использовать абсолютно все стандартные фишки, но в контексте наличия ролей.
Статья о модуле: Laravel 5. Иерархический RBAC для самых маленьких
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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