Closed incrize closed 10 years ago
Слишком сумбурное описание получилось, извиняюсь.
Вопрос был по работе RBAC, а именно по методу checkAccessRecursive
.
Cмутил момент, когда возможен вариант перебора всех разрешений.
Т. е. например если бы роль была не admin
, а например wTestAdmin
, тогда для пользователя, чья роль wTestAdmin
, проверка updatePost
будет происходить так:
1) updatePost - разрешение несвязанно с пользователем напрямую, поэтому проверка пойдет вверх рекурсивно по родительским разрешениям
2) updateOwnPost - будет выполнена проверка на владельца, если не успешно, рекурсия продолжается
3) author - роль не связанна с пользователем
4) wTestAdmin - роль связанна с пользователем, возвращается true
Если все именно так, думаю нужно описать в документации такое поведение.
I am trying check access with rules. From the documentation (https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md#role-based-access-control-rbac):
Result: Assignment: UserID 1 | admin UserID 2 | author
Item child (parent | child): admin | author author | updateOwnPost updateOwnPost | updatePost admin | updatePost
When executed:
Permission
updatePost
have 2 way to roleadmin
: 1) updatePost -> admin 2) updatePost -> updateOwnPost -> author -> adminExample from documentation works, becouse SQL query (https://github.com/yiisoft/yii2/blob/master/framework/rbac/DbManager.php#L115):
return parent sorted by name.