Здравствуйте. Делаю в своем проекте разграничение доступа и вот сижу мозгую, правильно ли я его делаю. Делал отталкиваясь на документацию. Итак, что имеем:
- Есть некий список, который может шариться другим пользователям
- Право на его редактирование или удаление пунктов списка должно быть только у того, кто его создал
Что я делаю:
- роль roleUser
- разрешение editOwnList с правилом, которое расширяет класс Rule и реализую метод "execute" в нем
- маршрут /list/edit
- даю roleUser и editOwnList разрешение на маршрут /list/edit
- в контроллере делаю if c методом \Yii::$app->user->can() или \Yii::$app->authManager->checkAccess() и если он отдает мне false, то в else выкидываю исключение.
Собственно в чем вопрос - правильно ли я понял суть правил. На мой взгляд как то все громоздко получается и зачем вообще это все, если я могу в котнроллере реализовать свою проверку и в случае неудачи выкинуть исключение. Буду благодарен за обЪяснения.
Правильно ли я пользуюсь правилами?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Правильно ли я пользуюсь правилами?
Вроде всё верно. RBAC используется исключительно чтобы без изменения логики проверок в контроллере можно было менять права.
Нравится Yii? Давайте сделаем его лучше!.
Re: Правильно ли я пользуюсь правилами?
Меня смущает то, что roleUser и editOwnList являются одновременно родителями для маршрута /list/edit. Хотя в моем представлении должно быть так в плане наследования разрешений: roleUser->editOwnList->/list/edit. То есть при обращении к маршруту ролей roleUser запросы как то типа должны фильтроваться правилом в editOwnList. Хотя как только я убираю в таблице auth_item_child зависимость roleUser->/list/edit, то никакой пользователь не может редактировать, в не зависимости от того, какая логика в правиле.
Но если, как вы говорите, что RBAC используется исключительно чтобы без изменения логики проверок в контроллере можно было менять права, то в принципе в этом есть для правды и этим все объясняется))
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Правильно ли я пользуюсь правилами?
Чтобы в RBAC ошибку найти лучше всего нарисовать полный граф на листочке. Сразу становится понятно.
Нравится Yii? Давайте сделаем его лучше!.