Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавление поддержки правил #16

Open
xloading opened this issue Sep 8, 2015 · 4 comments
Open

Добавление поддержки правил #16

xloading opened this issue Sep 8, 2015 · 4 comments

Comments

@xloading
Copy link
Contributor

xloading commented Sep 8, 2015

Здравствуйте!

Подскажите пожалуйста, планируете ли вы добавить также интерфейс для привязки к привилегиям правил (http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#using-rules)?
Сейчас эта часть модели RBAC является непокрытой вашим интерфейсом, насколько я могу судить.

Также, мне кажется, имеет место быть путаница в переводе: почему-то permission у вас переводится как правило, хотя по идее это привилегия.

Спасибо!

@developeruz
Copy link
Owner

Честно говоря не думала добавлять поддержку rules, т.к модуль сейчас устроен так, что вам не нужно понимать особенности работы Rbac и для создания новой роли или разрешения, быть программистом. Идея модуля в том, чтобы менять доступы не меняя ничего в коде. Для правил нужно создавать отдельный класс и программно задавать условия выполнения правила в зависимости от структуры вашего приложения и потребностей. Мне кажется проще привязать такое правило один раз из кода в тех проектах где это нужно, чем вводить в заблуждение такой опцией всех остальных. Наличие модуля никак не меняет прямую работу с Yii::$app->authManager.
Но я не буду закрывать вопрос и подумаю над тем, чтобы генерировать классы для правил автоматически, а в интерфейсе модуля сделать визуальный конструктор правил.
Спасибо за идею.

@xloading
Copy link
Contributor Author

xloading commented Sep 9, 2015

Эльвира, большое спасибо за развёрнутый ответ!
Думаю, в этом случае задача с автоматической генерацией классов правил и визуальным конструктором чересчур трудоёмка и вряд ли имеет смысл для вашей концепции. Я задал этот вопрос скорее из-за отсутствия какого-либо опыта работы с RBAC в Yii и исключительно в свете прочтения главы про правила из документации. Мне показалось, что это и есть "канонический" путь ограничения роли и только ему и стоит следовать.
А вы не могли бы проиллюстрировать, как в концепции вашего модуля оптимально реализовать ограничение наподобие updateOwnPost? Допустим, я создал permission на post/update и привязал его к роли author. Как действовать дальше? Просто явным образом проверять условие, аналогичное условию правила, в actionUpdate?
Ещё раз спасибо!

@developeruz
Copy link
Owner

Модуль вам в этом случаи не поможет. Тут вы только можете дать доступ к post/update для какой-то роли или не дать его. Более тонкую логику в любом случаи нужно реализовывать в коде. Так что да:

  • либо делать правило и привязывать его в коде (не через интерфейс модуля) и проверять через can()
  • либо прописывать бизнес-правило в AccessControl контроллера (через denyCallback)
  • либо делать if-проверку в начале нужного action или в методе beforeAction

@astapb74
Copy link
Contributor

astapb74 commented Oct 7, 2016

Добрый день, у Вас обнаружены логические ошибки в отправках запроса:

файл: developeruz\db_rbac\views\user\view.php
строка: 10 [**"update"**, 'id' => $user->getId()]]); ?>

файл: developeruz\db_rbac\controllers\UserController
строка: 87 return $this->redirect(Url::to(["view", 'id' => $user->getId()]));

Уберите полные пути в урл, у меня модуль находится в модуле admin.
Спасибо огромное, буду поддерживать Вас в разработки.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants