Назначение роли при регистрации через Ulogin

Главные вкладки

Аватар пользователя Alextr Alextr 15 сентября 2013 в 14:26

Здравствуйте, возникла проблема при назначении ролей пользователям. Стоит модуль autoassignrole, и пользователи при стандартной регистрации могут выбирать себе роль. Но есть еще модуль Ulogin, и если регистрация через него - нужно чтобы конкретная роль пользователю автоматически назначалась.
Пробовал включать в autoassignrole - Автоматическое назначение роли, тогда з Ulogin вроди все ок, но при стандартной регистрации пользователь получает - автоматическую роль + ту что он выбрал. А нужна только одна роль.
Может кто подскажет как с этим можно разрулить?

Комментарии

Аватар пользователя Alextr Alextr 15 сентября 2013 в 15:25

Вроди бы наше решение, конечно не самое правильное но рабочее. Подредактировал модуль Ulogin, файл ulogin.module
В нем после
db_query("INSERT INTO {ulogin_identity} (uid, network, ulogin_uid, data) VALUES (%d, '%s', '%s', '%s')",
$user->uid, $data['network'], $data['uid'], serialize($data));
Дописал
// - Автоматическое присвоение роли (посетитель).
db_query("INSERT INTO {users_roles} (uid, rid) VALUES (%d, 6)",
$user->uid);
Ну и при удалении

function _ulogin_identity_delete_by_uid($uid) {
$result = db_query("DELETE FROM {ulogin_identity} WHERE uid = '%d'", $uid);
Дописал
// - Автоматическое удаление роли (посетитель).
db_query("DELETE FROM {users_roles} WHERE uid = '%d'", $uid);

Хотелось бы услышать коменты по этому решению. Ну и надеюсь материал станет полезен другим.

Аватар пользователя duozersk duozersk 16 сентября 2013 в 12:08

Любой другой способ был бы правильней Smile Хачить модули - это вообще не способ, это приобретение геморроя.
Не знаете как по другому - попробуйте сначала хотя бы создать ишью для этого модуля на d.org (там я точно отвечу, так как все ишью, созданные на мои модули, попадают ко мне в список; а тут как повезёт - увижу или не увижу).

В вашем случае вам вполне хватит функционала модуля Rules - он умеет присваивать и забирать роли у пользователей.