1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<?php
use MediaWiki\MediaWikiServices;
use MediaWiki\ParamValidator\TypeDef\UserDef;
/**
* @ingroup API
*/
class ApiValidatePassword extends ApiBase {
public function execute() {
$params = $this->extractRequestParams();
// For sanity
$this->requirePostedParameters( [ 'password' ] );
if ( $params['user'] !== null ) {
$user = User::newFromName( $params['user'], 'creatable' );
if ( !$user ) {
$encParamName = $this->encodeParamName( 'user' );
$this->dieWithError(
[ 'apierror-baduser', $encParamName, wfEscapeWikiText( $params['user'] ) ],
"baduser_{$encParamName}"
);
}
if ( !$user->isAnon() ||
MediaWikiServices::getInstance()->getAuthManager()->userExists( $user->getName() )
) {
$this->dieWithError( 'userexists' );
}
$user->setEmail( (string)$params['email'] );
$user->setRealName( (string)$params['realname'] );
} else {
$user = $this->getUser();
}
$r = [];
$validity = $user->checkPasswordValidity( $params['password'] );
$r['validity'] = $validity->isGood() ? 'Good' : ( $validity->isOK() ? 'Change' : 'Invalid' );
$messages = array_merge(
$this->getErrorFormatter()->arrayFromStatus( $validity, 'error' ),
$this->getErrorFormatter()->arrayFromStatus( $validity, 'warning' )
);
if ( $messages ) {
$r['validitymessages'] = $messages;
}
$this->getHookRunner()->onApiValidatePassword( $this, $r );
$this->getResult()->addValue( null, $this->getModuleName(), $r );
}
public function mustBePosted() {
return true;
}
public function getAllowedParams() {
return [
'password' => [
ApiBase::PARAM_TYPE => 'password',
ApiBase::PARAM_REQUIRED => true
],
'user' => [
ApiBase::PARAM_TYPE => 'user',
UserDef::PARAM_ALLOWED_USER_TYPES => [ 'name', 'id' ],
],
'email' => null,
'realname' => null,
];
}
protected function getExamplesMessages() {
return [
'action=validatepassword&password=foobar'
=> 'apihelp-validatepassword-example-1',
'action=validatepassword&password=querty&user=Example'
=> 'apihelp-validatepassword-example-2',
];
}
public function getHelpUrls() {
return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Validatepassword';
}
}
|