yii\rbac - переназначение полномочия

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
pistol
Сообщения: 216
Зарегистрирован: 2014.07.12, 15:18
Откуда: Курган
Контактная информация:

yii\rbac - переназначение полномочия

Сообщение pistol »

В модели пользователя в beforeSave назначаю полномочия пользователю при создании:

Код: Выделить всё

$auth = Yii::$app->authManager;
$role = $auth->getRole($this->role);
$auth->assign($role, $this->id); 
А как переназначить потом? :) При повторном assign справедливо ругается

Код: Выделить всё

Duplicate entry 'admin-5' for key 'PRIMARY' 
updatAassign() не нашел. Вообще, по тому ли я пути пошел, присваивая ассигн в бефоресейв?
Аватара пользователя
pistol
Сообщения: 216
Зарегистрирован: 2014.07.12, 15:18
Откуда: Курган
Контактная информация:

Re: yii\rbac - переназначение полномочия

Сообщение pistol »

Пацантре, если никто меня не откачает, я обновлю роль напрямую в БД, минуя yii\rbac\DbManager. Почему там есть updateItem и нет updateAssignment?
Аватара пользователя
SpiritAbsolute
Сообщения: 187
Зарегистрирован: 2013.12.29, 18:20
Откуда: Калининград
Контактная информация:

Re: yii\rbac - переназначение полномочия

Сообщение SpiritAbsolute »

У меня была такая же загвостка... Но в итоге мне rbac не пригодился, и я сделал с помощью Access Control Filter и переопределяю на прямую значения в базе.
Я тоже хотел переопределить роль так как ты написал в первом посте. Мне выдавало ошибку

PHP Notice – yii\base\ErrorException
Trying to get property of non-object
строчка - if (!isset($this->items[$role->name])) {
строчка - $auth->assign($adminRole, $id_user);

Код: Выделить всё

$auth = Yii::$app->authManager;
$adminRole = $auth->getRole(User::ROLE_ADMIN);
$auth->assign($adminRole , $id_user);
Последний раз редактировалось SpiritAbsolute 2014.07.17, 10:49, всего редактировалось 1 раз.
Аватара пользователя
pistol
Сообщения: 216
Зарегистрирован: 2014.07.12, 15:18
Откуда: Курган
Контактная информация:

Re: yii\rbac - переназначение полномочия

Сообщение pistol »

Нашел метод revoke и revokeAll.

Получается, надо делать примерно так:

Код: Выделить всё

$auth = Yii::$app->authManager;
$newRole = $auth->getRole($userRole);
$oldRole = $auth->getRole($userOldRole);
$auth->revoke($oldRole, $userId);
$auth->assign($newRole , $userId); 
Как-то не очень.
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: yii\rbac - переназначение полномочия

Сообщение Akulenok »

Чуть чуть не в тему, а в чем разница между Rbac и Access Control?
Например на сайте мне надо иметь всего три роли, user, moder и admin я могу обойтись без Rbac?
ភាសាខ្មែរ Yii2 - это кайф!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii\rbac - переназначение полномочия

Сообщение zelenin »

Akulenok писал(а):Чуть чуть не в тему, а в чем разница между Rbac и Access Control?
Например на сайте мне надо иметь всего три роли, user, moder и admin я могу обойтись без Rbac?
AccessControl неправильно противопоставлять RBAC, т.к. это разные вещи.
Первое - это фильтр, проверяющий доступы к экшнам согласно правилам. Правила могут быть в том числе и на основе RBAC.
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: yii\rbac - переназначение полномочия

Сообщение Akulenok »

А есть где-нибудь мануал на русском по созданию Rbac?
для адвансед https://github.com/yiisoft/yii2/blob/ma ... ced-app.md
для первого yii есть рецепт, а для второго нет :(
ភាសាខ្មែរ Yii2 - это кайф!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii\rbac - переназначение полномочия

Сообщение zelenin »

Akulenok писал(а):А есть где-нибудь мануал на русском по созданию Rbac?
для адвансед https://github.com/yiisoft/yii2/blob/ma ... ced-app.md
для первого yii есть рецепт, а для второго нет :(
фигово быть разработчиком без знания английского? инфы ноль, ничерта не понятно, профессиональное развитие стоит на месте, все шлют в документацию и в гугл, а там все опять же на английском...
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: yii\rbac - переназначение полномочия

Сообщение Akulenok »

да какой я разработчик, так для себя.
а на английском есть? гугл выдал первой ссылкой
https://github.com/yiisoft/yii2/blob/ma ... ization.md
оно?
возился я с этим, ошибки летят и все тупик
пытался выполнить это
public function actionInit()
{
$auth = Yii::$app->authManager;
ошибка
iisoft\yii2\rbac\PhpManager.php
Invalid argument supplied for foreach()
foreach ($items as $name => $item) {
$class = $item['type'] == Item::TYPE_PERMISSION ? Permission::className() : Role::className();

пока английский выучишь уже будет yii5 какой-нибудь )
ភាសាខ្មែរ Yii2 - это кайф!
Ответить