Index: modules/user/user.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v retrieving revision 1.25 diff -u -p -r1.25 user.admin.inc --- modules/user/user.admin.inc 6 Sep 2008 08:36:22 -0000 1.25 +++ modules/user/user.admin.inc 11 Sep 2008 14:50:37 -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.919 diff -u -p -r1.919 user.module --- modules/user/user.module 8 Sep 2008 15:44:57 -0000 1.919 +++ modules/user/user.module 11 Sep 2008 14:50:37 -0000 @@ -908,6 +908,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; @@ -1046,8 +1050,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, ); Index: modules/user/user.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.pages.inc,v retrieving revision 1.16 diff -u -p -r1.16 user.pages.inc --- modules/user/user.pages.inc 6 Sep 2008 08:36:22 -0000 1.16 +++ modules/user/user.pages.inc 11 Sep 2008 14:50:37 -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'),