You are here

function hook_user_cancel_methods_alter in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/user/user.api.php \hook_user_cancel_methods_alter()
  2. 7 modules/user/user.api.php \hook_user_cancel_methods_alter()
  3. 9 core/modules/user/user.api.php \hook_user_cancel_methods_alter()

Modify account cancellation methods.

By implementing this hook, modules are able to add, customize, or remove account cancellation methods. All defined methods are turned into radio button form elements by user_cancel_methods() after this hook is invoked. The following properties can be defined for each method:

  • title: The radio button's title.
  • description: (optional) A description to display on the confirmation form if the user is not allowed to select the account cancellation method. The description is NOT used for the radio button, but instead should provide additional explanation to the user seeking to cancel their account.
  • access: (optional) A boolean value indicating whether the user can access a method. If 'access' is defined, the method cannot be configured as default method.

Parameters

array $methods: An array containing user account cancellation methods, keyed by method id.

See also

user_cancel_methods()

\Drupal\user\Form\UserCancelForm

Related topics

File

core/modules/user/user.api.php, line 93
Hooks provided by the User module.

Code

function hook_user_cancel_methods_alter(&$methods) {
  $account = \Drupal::currentUser();

  // Limit access to disable account and unpublish content method.
  $methods['user_cancel_block_unpublish']['access'] = $account
    ->hasPermission('administer site configuration');

  // Remove the content re-assigning method.
  unset($methods['user_cancel_reassign']);

  // Add a custom zero-out method.
  $methods['mymodule_zero_out'] = [
    'title' => t('Delete the account and remove all content.'),
    'description' => t('All your content will be replaced by empty strings.'),
    // access should be used for administrative methods only.
    'access' => $account
      ->hasPermission('access zero-out account cancellation method'),
  ];
}