Drupal6: وصول المستخدم إلى تسجيل الدخول إلى Deny
سؤال
أريد إذنًا من شأنه أن يمنع الأشخاص من تسجيل الدخول. (لذلك ، يمكن حظر جميع مستخدمي الدور X مؤقتًا ، مع إبقاء صفحات ملفاتهم الشخصية متاحة.)
مقتطف من عملية تسجيل الدخول من Pro Drupal Development 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 خطأ.
المحلول
ليس لدي مثيل دروبال لاختبار هذا على أجهزة الصراف الآلي ، لكنني أعتقد أنك تريد هذا:
/**
* 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");
}
}
يحذف معلومات المستخدم الخاصة بهم ويحل محلها بالمستخدم المجهول بدلاً من ذلك.
نصائح أخرى
أعتقد أن هذا ينجز ما تحاول القيام به.
/**
* 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 بعد تسجيل الدخول ، لذلك سيؤدي ذلك على الفور إلى تسجيلها مرة أخرى مباشرة - مما يجعله بشكل أساسي حتى لا يتمكنوا من تسجيل الدخول.
لا تنتمي إلى StackOverflow