RBAC, assignmentTable

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Vitalik_yii
Сообщения: 65
Зарегистрирован: 2014.01.13, 10:03

RBAC, assignmentTable

Сообщение Vitalik_yii »

Добрый день!

Вопрос по assignmentTable.

Эта таблица, как я понимаю, используется для присвоения конкретному пользователю какого либо права, роли.

Вопрос в следующем: один раз я создал права, роли, а в другой раз решил их поменять, но чтобы это сделать мне придется удалить все item_name в таблице и соответственно привязку к user_id (записи assignmentTable). Как это более правильно использовать, чтобы при изменении прав, ролей как то сохранять привязку конкретных пользователей к правам, ролям?
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: RBAC, assignmentTable

Сообщение futbolim »

Правильно. Во время запуска скрипта, перед тем, как он набивает таблицы с ролями, их нужно очистить.

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

$auth = Yii::$app->authManager;
$auth->removeAll();
 
Vitalik_yii
Сообщения: 65
Зарегистрирован: 2014.01.13, 10:03

Re: RBAC, assignmentTable

Сообщение Vitalik_yii »

futbolim писал(а):Правильно. Во время запуска скрипта, перед тем, как он набивает таблицы с ролями, их нужно очистить.

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

$auth = Yii::$app->authManager;
$auth->removeAll();
futbloim, спасибо! Но, интересует именно то, как сохранять привязку конкретных пользователей к правам и ролям. (и как более правильно). Например, я сделал assign к 1000 пользователям, и мне нужно добавить еще один permission(или role), но при этом оставить ту 1000 привязанную к правам (роли). Или здесь изначально лучше использовать Rule?
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: RBAC, assignmentTable

Сообщение VaNnOrus »

Изначально, по-моему, лучше вообще не использовать assignmentTable, а просто создать свой класс дбМенеджер и переопределить метод getAssignment в котором присваивать роль по полю из модели юзера.

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

public function getAssignment($userId)
{
    if ( ! Yii::$ app-> user-> isGuest){
        $assignment = new \yii\rbac\Assignment; 
        $assignment->userId = $userId;
        $assignment->roleName = Yii::$ app-> user->identity->role;
        return [$ assignment-> roleName => $ assignment];
    }
 } 
ShNURoK
Сообщения: 168
Зарегистрирован: 2012.04.12, 05:44
Контактная информация:

Re: RBAC, assignmentTable

Сообщение ShNURoK »

VaNnOrus писал(а):лучше вообще не использовать assignmentTable
А почему лучше не использовать? Ну кроме того, что так по старинке.
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: RBAC, assignmentTable

Сообщение VaNnOrus »

Да, я погорячился. Просто сейчас сам наконец дошел до работы с ролями. Переопределять метод как я сказал не правильно, смотрите последние сообщения в этой теме.
Ответить