Index: modules/user/user.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v retrieving revision 1.18 diff -u -p -r1.18 user.admin.inc --- modules/user/user.admin.inc 16 Jan 2008 22:54:41 -0000 1.18 +++ modules/user/user.admin.inc 23 Feb 2008 06:28:55 -0000 @@ -15,7 +15,7 @@ function user_admin($callback_arg = '') $output = drupal_get_form('user_register'); break; default: - if (!empty($_POST['accounts']) && isset($_POST['operation']) && ($_POST['operation'] == 'delete')) { + if (!empty($_POST['accounts']) && isset($_POST['operation']) && ($_POST['operation'] == 'delete') && empty($_POST['accounts'][1])) { $output = drupal_get_form('user_multiple_delete_confirm'); } else { @@ -220,6 +220,12 @@ function user_admin_account_validate($fo if (count($form_state['values']['accounts']) == 0) { form_set_error('', t('No users selected.')); } + if ($form_values['operation'] == 'delete') { + if (!empty($form_values['accounts'][1])) { + $user = user_load(1); + form_set_error('', t('%name is the superuser and cannot be deleted.', array('%name' => $user->name))); + } + } } /** Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.892 diff -u -p -r1.892 user.module --- modules/user/user.module 3 Feb 2008 19:23:01 -0000 1.892 +++ modules/user/user.module 23 Feb 2008 06:23:38 -0000 @@ -871,6 +871,10 @@ function user_edit_access($account) { return (($GLOBALS['user']->uid == $account->uid) || user_access('administer users')) && $account->uid > 0; } +function user_delete_access($account) { + return ($account->uid > 1 && user_access('administer users')); +} + function user_load_self($arg) { $arg[1] = user_load($GLOBALS['user']->uid); return $arg; @@ -1059,8 +1063,8 @@ function user_menu() { 'title' => 'Delete', 'page callback' => 'drupal_get_form', 'page arguments' => array('user_confirm_delete', 1), - 'access callback' => 'user_access', - 'access arguments' => array('administer users'), + 'access callback' => 'user_delete_access', + 'access arguments' => array(1), 'type' => MENU_CALLBACK, 'file' => 'user.pages.inc', ); Index: modules/user/user.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.pages.inc,v retrieving revision 1.11 diff -u -p -r1.11 user.pages.inc --- modules/user/user.pages.inc 8 Jan 2008 10:35:43 -0000 1.11 +++ modules/user/user.pages.inc 23 Feb 2008 06:05:30 -0000 @@ -238,7 +238,7 @@ function user_profile_form($form_state, $form['_category'] = array('#type' => 'value', '#value' => $category); $form['_account'] = array('#type' => 'value', '#value' => $account); $form['submit'] = array('#type' => 'submit', '#value' => t('Save'), '#weight' => 30); - if (user_access('administer users')) { + if (user_access('administer users') && $account->uid != 1) { $form['delete'] = array( '#type' => 'submit', '#value' => t('Delete'),