]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - maintenance/changePassword.php
MediaWiki 1.30.2-scripts
[autoinstalls/mediawiki.git] / maintenance / changePassword.php
1 <?php
2 /**
3  * Change the password of a given user
4  *
5  * Copyright © 2005, Ævar Arnfjörð Bjarmason
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  * http://www.gnu.org/copyleft/gpl.html
21  *
22  * @file
23  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
24  * @ingroup Maintenance
25  */
26
27 require_once __DIR__ . '/Maintenance.php';
28
29 /**
30  * Maintenance script to change the password of a given user.
31  *
32  * @ingroup Maintenance
33  */
34 class ChangePassword extends Maintenance {
35         public function __construct() {
36                 parent::__construct();
37                 $this->addOption( "user", "The username to operate on", false, true );
38                 $this->addOption( "userid", "The user id to operate on", false, true );
39                 $this->addOption( "password", "The password to use", true, true );
40                 $this->addDescription( "Change a user's password" );
41         }
42
43         public function execute() {
44                 if ( $this->hasOption( "user" ) ) {
45                         $user = User::newFromName( $this->getOption( 'user' ) );
46                 } elseif ( $this->hasOption( "userid" ) ) {
47                         $user = User::newFromId( $this->getOption( 'userid' ) );
48                 } else {
49                         $this->error( "A \"user\" or \"userid\" must be set to change the password for", true );
50                 }
51                 if ( !$user || !$user->getId() ) {
52                         $this->error( "No such user: " . $this->getOption( 'user' ), true );
53                 }
54                 $password = $this->getOption( 'password' );
55                 try {
56                         $status = $user->changeAuthenticationData( [
57                                 'username' => $user->getName(),
58                                 'password' => $password,
59                                 'retype' => $password,
60                         ] );
61                         if ( !$status->isGood() ) {
62                                 throw new PasswordError( $status->getWikiText( null, null, 'en' ) );
63                         }
64                         $user->saveSettings();
65                         $this->output( "Password set for " . $user->getName() . "\n" );
66                 } catch ( PasswordError $pwe ) {
67                         $this->error( $pwe->getText(), true );
68                 }
69         }
70 }
71
72 $maintClass = "ChangePassword";
73 require_once RUN_MAINTENANCE_IF_MAIN;