我想要一个禁止用户登录的权限。(因此,可以暂时阻止角色X的所有用户,同时保持他们的个人资料页面可用。)
Pro Drupal Development 2nd Edition的登录过程摘录:
我想在此过程的第三步停止用户。我有一个模块:
/**
* Implementation of hook_perm().
*/
function odp_perm() {
return array('log in');
}
/**
* Implementation of hook_user
* lock out without the 'log in' permission
*/
function odp_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'login' && ! user_access('log in')) {
drupal_set_message("You do not have access to log in.", "error");
drupal_goto('logout'); //doesn't work
drupal_goto('content/party-tonight'); //also doesn't work
}
}
也许我正在使用drupal_goto错误。
答案 0 :(得分:1)
我相信这可以完成你想要做的事情。
/**
* Implementation of hook_user
* lock out without the 'log in' permission
*/
function odp_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'login' && ! user_access('log in')) {
drupal_set_message("You don't have permission to log in");
//prevent login
header("Location: http://www.example.com/?q=logout");
// header("Location: http://www.example.com/logout"); if using clean URLs
}
}
这会将用户注销并显示一条消息。如果我没记错,hook_user与$ op登录会在用户登录后触发,所以这会立即将它们立即记录下来 - 实际上是因为它们无法登录。
答案 1 :(得分:0)
我没有Drupal实例在ATM上测试它,但我想你想要这个:
/**
* Implementation of hook_user
* lock out without the 'log in' permission
*/
function odp_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'login' && ! user_access('log in')) {
global $user;
$user = drupal_anonymous_user();
drupal_set_message("You don't have permission to log in");
}
}
删除用户信息并将其替换为匿名用户。