diff options
author | Dries Buytaert <dries@buytaert.net> | 2005-06-21 18:21:08 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2005-06-21 18:21:08 +0000 |
commit | 4c77761efb355f52f0bc5502cf8d846f175f408b (patch) | |
tree | 18380da37183e8f36df670f55afa3f8fa951e0b1 /modules | |
parent | e550f8416210489aedd88a73cdc3c5b614edc574 (diff) | |
download | brdo-4c77761efb355f52f0bc5502cf8d846f175f408b.tar.gz brdo-4c77761efb355f52f0bc5502cf8d846f175f408b.tar.bz2 |
- Patch #3962 by deekayen: improved error message when a blocked user attempts to login.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/user.module | 27 | ||||
-rw-r--r-- | modules/user/user.module | 27 |
2 files changed, 44 insertions, 10 deletions
diff --git a/modules/user.module b/modules/user.module index 7bba07fb7..d53165d69 100644 --- a/modules/user.module +++ b/modules/user.module @@ -339,6 +339,18 @@ function user_access($string, $account = NULL) { } /** + * Checks for usernames blocked by user administration + * + * @return boolean true for blocked users, false for active + */ +function user_is_blocked($name) { + $allow = db_fetch_object(db_query("SELECT * FROM {users} WHERE status = 1 AND name = LOWER('%s')", $name)); + $deny = db_fetch_object(db_query("SELECT * FROM {users} WHERE status = 0 AND name = LOWER('%s')", $name)); + + return $deny && !$allow; +} + +/** * Send an e-mail message. */ function user_mail($mail, $subject, $message, $header) { @@ -798,8 +810,13 @@ function user_login($edit = array(), $msg = '') { drupal_goto('user'); } - if (drupal_deny('user', $edit['name'])) { - $error = t('The name %s has been denied access.', array('%s' => theme('placeholder', $edit['name']))); + if (user_is_blocked($edit['name'])) { + // blocked in user administration + $error = t('The username %name has been blocked.', array('%name' => theme('placeholder', $edit['name']))); + } + else if (drupal_is_denied('user', $edit['name'])) { + // denied by access controls + $error = t('The name %name is a reserved username.', array('%name' => theme('placeholder', $edit['name']))); } else if ($edit['name'] && $edit['pass']) { @@ -1116,7 +1133,7 @@ function user_edit_validate($uid, &$edit) { else if (db_num_rows(db_query("SELECT uid FROM {users} WHERE uid != %d AND LOWER(name) = LOWER('%s')", $uid, $edit['name'])) > 0) { form_set_error('name', t('The name %name is already taken.', array('%name' => theme('placeholder', $edit['name'])))); } - else if (drupal_deny('user', $edit['name'])) { + else if (drupal_is_denied('user', $edit['name'])) { form_set_error('name', t('The name %name has been denied access.', array('%name' => theme('placeholder', $edit['name'])))); } @@ -1127,7 +1144,7 @@ function user_edit_validate($uid, &$edit) { else if (db_num_rows(db_query("SELECT uid FROM {users} WHERE uid != %d AND LOWER(mail) = LOWER('%s')", $uid, $edit['mail'])) > 0) { form_set_error('mail', t('The e-mail address %email is already taken.', array('%email' => theme('placeholder', $edit['mail'])))); } - else if (drupal_deny('mail', $edit['mail'])) { + else if (drupal_is_denied('mail', $edit['mail'])) { form_set_error('mail', t('The e-mail address %email has been denied access.', array('%email' => theme('placeholder', $edit['mail'])))); } @@ -1384,7 +1401,7 @@ function user_admin_access_check() { $edit = $_POST['edit']; if ($op) { - if (drupal_deny($edit['type'], $edit['test'])) { + if (drupal_is_denied($edit['type'], $edit['test'])) { drupal_set_message(t('%test is not allowed.', array('%test' => theme('placeholder', $edit['test'])))); } else { diff --git a/modules/user/user.module b/modules/user/user.module index 7bba07fb7..d53165d69 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -339,6 +339,18 @@ function user_access($string, $account = NULL) { } /** + * Checks for usernames blocked by user administration + * + * @return boolean true for blocked users, false for active + */ +function user_is_blocked($name) { + $allow = db_fetch_object(db_query("SELECT * FROM {users} WHERE status = 1 AND name = LOWER('%s')", $name)); + $deny = db_fetch_object(db_query("SELECT * FROM {users} WHERE status = 0 AND name = LOWER('%s')", $name)); + + return $deny && !$allow; +} + +/** * Send an e-mail message. */ function user_mail($mail, $subject, $message, $header) { @@ -798,8 +810,13 @@ function user_login($edit = array(), $msg = '') { drupal_goto('user'); } - if (drupal_deny('user', $edit['name'])) { - $error = t('The name %s has been denied access.', array('%s' => theme('placeholder', $edit['name']))); + if (user_is_blocked($edit['name'])) { + // blocked in user administration + $error = t('The username %name has been blocked.', array('%name' => theme('placeholder', $edit['name']))); + } + else if (drupal_is_denied('user', $edit['name'])) { + // denied by access controls + $error = t('The name %name is a reserved username.', array('%name' => theme('placeholder', $edit['name']))); } else if ($edit['name'] && $edit['pass']) { @@ -1116,7 +1133,7 @@ function user_edit_validate($uid, &$edit) { else if (db_num_rows(db_query("SELECT uid FROM {users} WHERE uid != %d AND LOWER(name) = LOWER('%s')", $uid, $edit['name'])) > 0) { form_set_error('name', t('The name %name is already taken.', array('%name' => theme('placeholder', $edit['name'])))); } - else if (drupal_deny('user', $edit['name'])) { + else if (drupal_is_denied('user', $edit['name'])) { form_set_error('name', t('The name %name has been denied access.', array('%name' => theme('placeholder', $edit['name'])))); } @@ -1127,7 +1144,7 @@ function user_edit_validate($uid, &$edit) { else if (db_num_rows(db_query("SELECT uid FROM {users} WHERE uid != %d AND LOWER(mail) = LOWER('%s')", $uid, $edit['mail'])) > 0) { form_set_error('mail', t('The e-mail address %email is already taken.', array('%email' => theme('placeholder', $edit['mail'])))); } - else if (drupal_deny('mail', $edit['mail'])) { + else if (drupal_is_denied('mail', $edit['mail'])) { form_set_error('mail', t('The e-mail address %email has been denied access.', array('%email' => theme('placeholder', $edit['mail'])))); } @@ -1384,7 +1401,7 @@ function user_admin_access_check() { $edit = $_POST['edit']; if ($op) { - if (drupal_deny($edit['type'], $edit['test'])) { + if (drupal_is_denied($edit['type'], $edit['test'])) { drupal_set_message(t('%test is not allowed.', array('%test' => theme('placeholder', $edit['test'])))); } else { |