Правильно ли я пользуюсь правилами?

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
svisch
Сообщения: 19
Зарегистрирован: 2019.12.23, 11:07

Правильно ли я пользуюсь правилами?

Сообщение svisch »

Здравствуйте. Делаю в своем проекте разграничение доступа и вот сижу мозгую, правильно ли я его делаю. Делал отталкиваясь на документацию. Итак, что имеем:
- Есть некий список, который может шариться другим пользователям
- Право на его редактирование или удаление пунктов списка должно быть только у того, кто его создал
Что я делаю:
- роль 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: Правильно ли я пользуюсь правилами?

Сообщение samdark »

Вроде всё верно. RBAC используется исключительно чтобы без изменения логики проверок в контроллере можно было менять права.
svisch
Сообщения: 19
Зарегистрирован: 2019.12.23, 11:07

Re: Правильно ли я пользуюсь правилами?

Сообщение svisch »

samdark писал(а): 2020.11.30, 15:04 Вроде всё верно. RBAC используется исключительно чтобы без изменения логики проверок в контроллере можно было менять права.
Меня смущает то, что 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: Правильно ли я пользуюсь правилами?

Сообщение samdark »

Чтобы в RBAC ошибку найти лучше всего нарисовать полный граф на листочке. Сразу становится понятно.
svisch
Сообщения: 19
Зарегистрирован: 2019.12.23, 11:07

Re: Правильно ли я пользуюсь правилами?

Сообщение svisch »

samdark писал(а): 2020.12.01, 15:10 Чтобы в RBAC ошибку найти лучше всего нарисовать полный граф на листочке. Сразу становится понятно.
Ясно. Спасибо за подсказки. Просто думал координально что то не правильно делаю. А оказалось норм)
Ответить