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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
<?php
namespace MediaWiki\Api;
use MediaWiki\Auth\AuthManager;
use MediaWiki\ParamValidator\TypeDef\UserDef;
use MediaWiki\User\UserFactory;
use MediaWiki\User\UserRigorOptions;
use Wikimedia\ParamValidator\ParamValidator;
/**
* @ingroup API
*/
class ApiValidatePassword extends ApiBase {
private AuthManager $authManager;
private UserFactory $userFactory;
public function __construct(
ApiMain $mainModule,
string $moduleName,
AuthManager $authManager,
UserFactory $userFactory
) {
parent::__construct( $mainModule, $moduleName );
$this->authManager = $authManager;
$this->userFactory = $userFactory;
}
public function execute() {
$params = $this->extractRequestParams();
$this->requirePostedParameters( [ 'password' ] );
if ( $params['user'] !== null ) {
$user = $this->userFactory->newFromName(
$params['user'],
UserRigorOptions::RIGOR_CREATABLE
);
if ( !$user ) {
$encParamName = $this->encodeParamName( 'user' );
$this->dieWithError(
[ 'apierror-baduser', $encParamName, wfEscapeWikiText( $params['user'] ) ],
"baduser_{$encParamName}"
);
}
if ( $user->isRegistered() || $this->authManager->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' => [
ParamValidator::PARAM_TYPE => 'password',
ParamValidator::PARAM_REQUIRED => true
],
'user' => [
ParamValidator::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';
}
}
/** @deprecated class alias since 1.43 */
class_alias( ApiValidatePassword::class, 'ApiValidatePassword' );
|