From cca10f71a8e9e1f68af455caf720832ca626d23b Mon Sep 17 00:00:00 2001 From: Andrew Garrett Date: Thu, 2 Dec 2010 04:17:11 +0000 Subject: [PATCH] Merge DisableAccount extension into core, disabled by default because the rights are unassigned --- includes/AutoLoader.php | 1 + includes/SpecialPage.php | 1 + includes/specials/SpecialDisableAccount.php | 65 +++++++++++++++++++++ languages/messages/MessagesEn.php | 12 ++++ 4 files changed, 79 insertions(+) create mode 100644 includes/specials/SpecialDisableAccount.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 5661375057..0474aa2615 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -625,6 +625,7 @@ $wgAutoloadLocalClasses = array( 'SpecialBookSources' => 'includes/specials/SpecialBooksources.php', 'SpecialCategories' => 'includes/specials/SpecialCategories.php', 'SpecialComparePages' => 'includes/specials/SpecialComparePages.php', + 'SpecialDisableAccount' => 'includes/specials/SpecialDisableAccount.php', 'SpecialExport' => 'includes/specials/SpecialExport.php', 'SpecialFilepath' => 'includes/specials/SpecialFilepath.php', 'SpecialImport' => 'includes/specials/SpecialImport.php', diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index 35890dcbc4..f678de3ba0 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -133,6 +133,7 @@ class SpecialPage { 'Listbots' => array( 'SpecialRedirectToSpecial', 'Listbots', 'Listusers', 'bot' ), 'Activeusers' => 'SpecialActiveUsers', 'Userrights' => 'UserrightsPage', + 'DisableAccount' => 'SpecialDisableAccount', # Recent changes and logs 'Newimages' => array( 'IncludableSpecialPage', 'Newimages' ), diff --git a/includes/specials/SpecialDisableAccount.php b/includes/specials/SpecialDisableAccount.php new file mode 100644 index 0000000000..0df21592cd --- /dev/null +++ b/includes/specials/SpecialDisableAccount.php @@ -0,0 +1,65 @@ + array( + 'type' => 'text', + 'validation-callback' => array( __CLASS__, 'validateUser' ), + 'label-message' => 'disableaccount-user', + ), + 'confirm' => array( + 'type' => 'toggle', + 'validation-callback' => array( __CLASS__, 'checkConfirmation' ), + 'label-message' => 'disableaccount-confirm', + ), + ); + + $htmlForm = new HTMLForm( $formFields, 'disableaccount' ); + + $htmlForm->setSubmitCallback( array( __CLASS__, 'submit' ) ); + $htmlForm->setTitle( $this->getTitle() ); + + $htmlForm->show(); + } + + static function validateUser( $field, $allFields ) { + $u = User::newFromName( $field ); + + if ( $u && $u->getID() != 0 ) { + return true; + } else { + return wfMsgExt( 'disableaccount-nosuchuser', 'parseinline', array( $field ) ); + } + } + + static function checkConfirmation( $field, $allFields ) { + if ( $field ) { + return true; + } else { + return wfMsgExt( 'disableaccount-mustconfirm', 'parseinline' ); + } + } + + static function submit( $fields ) { + $user = User::newFromName( $fields['account'] ); + + $user->setPassword( null ); + $user->setEmail( null ); + $user->setToken(); + $user->addGroup( 'inactive' ); + + $user->saveSettings(); + $user->invalidateCache(); + + global $wgOut; + $wgOut->addWikiMsg( 'disableaccount-success', $user->getName() ); + + return true; + } +} \ No newline at end of file diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 6eef8491a9..9dbdec5854 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -4359,4 +4359,16 @@ This site is experiencing technical difficulties.', 'sqlite-has-fts' => '$1 with full-text search support', 'sqlite-no-fts' => '$1 without full-text search support', +## Special:DisableAccount +'disableaccount-desc' => 'Allows administrators to disable individual accounts.', +'right-disableaccount' => 'Disable accounts', +'disableaccount' => 'Disable a user account', +'disableaccount-user' => 'User name:', +'disableaccount-confirm' => "Disable this user account. +The user will not be able to log in, reset their password, or receive email notifications. +If the user is currently logged in anywhere, they will be immediately logged out. +''Note that disabling an account is not reversible without system administrator intervention.''", +'disableaccount-mustconfirm' => 'You must confirm that you wish to disable this account.', +'disableaccount-nosuchuser' => 'The user account "$1" does not exist.', +'disableaccount-success' => 'The user account "$1" has been permanently disabled.', ); -- 2.20.1