Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.703 diff -u -r1.703 user.module --- modules/user/user.module 28 Oct 2006 15:13:41 -0000 1.703 +++ modules/user/user.module 2 Nov 2006 16:39:50 -0000 @@ -402,7 +402,7 @@ * Implementation of hook_perm(). */ function user_perm() { - return array('administer access control', 'administer users', 'access user profiles', 'change own username'); + return array('administer access control', 'administer users', 'access user profiles', 'change own username', 'delete own account'); } /** @@ -809,7 +809,8 @@ 'callback' => 'drupal_get_form', 'callback arguments' => array('user_edit'), 'access' => $admin_access || $user->uid == arg(1), 'type' => MENU_LOCAL_TASK); $items[] = array('path' => 'user/'. arg(1) .'/delete', 'title' => t('Delete'), - 'callback' => 'user_edit', 'access' => $admin_access, + 'callback' => 'user_edit', + 'access' => ($admin_access || (user_access('delete own account') && $account->uid == $user->uid)), 'type' => MENU_CALLBACK); if (arg(2) == 'edit') { @@ -1398,7 +1399,12 @@ if (arg(2) == 'delete') { if ($edit['confirm']) { user_delete($edit, $account->uid); - drupal_goto('admin/user/user'); + if ($account->uid == $user->uid) { + drupal_goto(''); + } + else { + drupal_goto('admin/user/user'); + } } else { return drupal_get_form('user_confirm_delete', $account->name, $account->uid); @@ -1417,7 +1423,7 @@ $form['_category'] = array('#type' => 'value', '#value' => $category); $form['_account'] = array('#type' => 'value', '#value' => $account); $form['submit'] = array('#type' => 'submit', '#value' => t('Submit'), '#weight' => 30); - if (user_access('administer users')) { + if (user_access('administer users') || (user_access('delete own account') && $account->uid == $user->uid)) { $form['delete'] = array('#type' => 'submit', '#value' => t('Delete'), '#weight' => 31); } $form['#attributes']['enctype'] = 'multipart/form-data';