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

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
MaxKyivUA
Сообщения: 6
Зарегистрирован: 2017.10.29, 13:52

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

Сообщение MaxKyivUA » 2017.11.03, 19:08

Доброго времени суток!
Скажите пожалуйста как обновить существующую запись в таблице 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';

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

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

Аватара пользователя
ElisDN
Сообщения: 4984
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2017.11.04, 00:05

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

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

MaxKyivUA
Сообщения: 6
Зарегистрирован: 2017.10.29, 13:52

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

Сообщение MaxKyivUA » 2017.11.04, 12:39

ElisDN писал(а):
2017.11.04, 00:05

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

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

DronTat
Сообщения: 9
Зарегистрирован: 2017.12.19, 14:29

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

Сообщение DronTat » 2018.05.18, 11:10

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

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

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

Nex-Otaku
Сообщения: 809
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku » 2018.05.18, 12:21

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

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

DronTat
Сообщения: 9
Зарегистрирован: 2017.12.19, 14:29

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

Сообщение DronTat » 2018.05.18, 13:41

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 ) )
Последний раз редактировалось DronTat 2018.05.18, 17:05, всего редактировалось 1 раз.

Nex-Otaku
Сообщения: 809
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku » 2018.05.18, 16:51

Видимо вы не знаете основ языка PHP. Срочно восполняйте пробел. Читайте про массивы, объекты и свойства.

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

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

Ответить