Как программно назначить роль пользователю-администратору?
Мне нужно программно назначить роль пользователя администратору. Как я могу? Я попробовал некоторые методы, такие как
try {
$user->setRoleIds(array(<role_id>))
->setRoleUserId($user->getUserId())
->saveRelations();
} catch (Exception $e) {
echo $e->getMessage();
exit;
}
Но когда мы применяем приведенный выше код, база данных повреждается и выдает ошибку - "Parent Role id 'G5' does not exist"
.
Это происходит потому, что, когда я применяю приведенный выше код, пользователь-администратор с идентификатором родительской роли удаляется, и я не смогу получить доступ к базе данных, если я воссоздам ее снова!
Может ли кто-нибудь указать на решение?
2 answers
Похоже, вы делаете это нормально. Все зависит от используемых вами значений.
Этот фрагмент кода сработал для меня. Предполагая, что $id
является идентификатором администратора, о котором идет речь:
$user = Mage::getModel('admin/user')->load($id);
$user->setRoleIds(array(5))
->setRoleUserId($user->getUserId())
->saveRelations();
5 - идентификатор роли. Он даже работает с идентификатором роли, которого не существует. Он просто удаляет любую роль у пользователя-администратора.
Странно! Но, наконец, получил решение от здесь.
Попробовал поймать вот так,
try {
$role = Mage::getModel("admin/role");
$role->setParent_id(5);
$role->setTree_level(1);
$role->setRole_type('U');
$role->setUser_id($user_id);
$role->save();
echo "Your username: ".$username.", and password: ".$password;
} catch (Exception $e) {
echo $e->getMessage();
}
И это Сработало. Здесь parent Id
- мой пользовательский идентификатор роли. $user_id
- идентификатор пользователя, к которому должна быть прикреплена роль.