Страница 1 из 1

RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2017.11.03, 19:08
MaxKyivUA
Доброго времени суток!
Скажите пожалуйста как обновить существующую запись в таблице auth_assignment
Как добавить я понял а как обновить, какой метод для этого есть и есть ли он вообще?

Как я добавляю:
//Метод создания ролей для зарегистрированного пользователя.
public function createUserRole(string $role)
{
$rbac = Yii::$app->authManager;
$user = $rbac->getRole($role);
$rbac->assign($user, UserRecord::findOne(['username' => $this->username])->id);
return true;
}
Но мне очень нужно понять, как обновить? Запрос на подобии:
UPDATE `auth_assignment` SET `item_name` = 'user' WHERE `auth_assignment`.`item_name` = 'admin' AND `auth_assignment`.`user_id` = '1';

То есть изменить роль Админа на Юзер и обратно(Изменять роли из админки)

Спасибо вам большое.

Re: RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2017.11.04, 00:05
ElisDN

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

$rbac->revokeAll($user->id);
$rbac->assign($role, $user->id);

Re: RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2017.11.04, 12:39
MaxKyivUA
ElisDN писал(а):
2017.11.04, 00:05

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

$rbac->revokeAll($user->id);
$rbac->assign($role, $user->id);
Да благословит вас Господь!
Спасибо вам большое! Я очень вам благодарен.

Re: RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2018.05.18, 11:10
DronTat
Здравствуйте. Не хочу создавать новую тему. У меня есть окно редактирования пользователя. Хочу сделать проверку, не изменялось ли роль. Если изменилась, проведем обновление роли. Но как сделать проверку, не могу забрать из массива имя роли в строке

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

$role = Yii::$app->authManager->getRolesByUser($id);

Re: RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2018.05.18, 12:21
Nex-Otaku
Ну, во-первых, это не одна роль, а массив, а во-вторых, имя роли берёте либо из ключа массива, либо из объекта значения свойство "name".

Вы документацию-то хоть посмотрите: https://www.yiiframework.com/doc/api/2. ... r()-detail

Re: RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2018.05.18, 13:41
DronTat
Nex-Otaku писал(а):
2018.05.18, 12:21
Ну, во-первых, это не одна роль, а массив, а во-вторых, имя роли берёте либо из ключа массива, либо из объекта значения свойство "name".

Вы документацию-то хоть посмотрите: https://www.yiiframework.com/doc/api/2. ... r()-detail
Я знаю что это массив, у меня не получается выделить оттуда name.

Array ( [director] => yii\rbac\Role Object ( [type] => 1 [name] => director [description] => Директор [ruleName] => [data] => [createdAt] => 1525549528 [updatedAt] => 1525549528 ) )

Re: RBAC Обновление в табл. auth_assignment помогите!

Добавлено: 2018.05.18, 16:51
Nex-Otaku
Видимо вы не знаете основ языка PHP. Срочно восполняйте пробел. Читайте про массивы, объекты и свойства.

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

$roles = Yii::$app->authManager->getRolesByUser($id);
if (!empty($roles)) {
    $role = $roles[0];
    $name = $role->name;
}