我的网站上有多个角色,当某些用户注册到我的网站时,我想为其分配特定的角色。
当新用户提交注册表格时,我该如何以编程方式为新用户分配特定角色?
我尝试了诸如logintoboggan,autoassignrole之类的模块,但是当我想将角色分配给特定用户而不是我网站上所有注册的用户时,它们会在注册时提供默认的用户角色。
我的网站上有多个角色,当某些用户注册到我的网站时,我想为其分配特定的角色。
当新用户提交注册表格时,我该如何以编程方式为新用户分配特定角色?
我尝试了诸如logintoboggan,autoassignrole之类的模块,但是当我想将角色分配给特定用户而不是我网站上所有注册的用户时,它们会在注册时提供默认的用户角色。
Answers:
我们还使用user_multiple_role_edit()函数解决了此任务。在我们的用例中,我们没有对注册表单做出反应,而是通过特殊的菜单回调来动态创建用户。
第一:创建用户
$user = new stdClass();
$user->name = $name;
$user->status = 1;
user_save($user);
第二:为用户分配角色
$role = user_role_load_by_name("my custom role");
user_multiple_role_edit(array($user->uid), 'add_role', $role->rid);
在我的情况下,只有四个profile2个人资料,但是如果此人在他们的注册表中具有一定的价值,我必须将其添加到新角色中。这是我所做的:
<?php
function MYMODULE_user_insert(&$edit, $account, $category){
if (array_key_exists('profile_club', $account)) {
$is_uni = FALSE;
if ($account->profile_club['field_uni_club']['und'][0]['value'] == 1 ) {
$is_uni = TRUE;
}
if ($is_uni) {
$uid = $account->uid;
$role_name = 'uni_club';
if ($role = user_role_load_by_name($role_name)) {
user_multiple_role_edit(array($uid), 'add_role', $role->rid);
}
}
}
}
?>