48 parent::__construct( $main, $action );
50 $this->passwordReset = $passwordReset;
54 private $hasAnyRoutes =
null;
60 private function hasAnyRoutes() {
61 if ( $this->hasAnyRoutes ===
null ) {
62 $resetRoutes = $this->
getConfig()->get( MainConfigNames::PasswordResetRoutes );
63 $this->hasAnyRoutes = !empty( $resetRoutes[
'username'] ) || !empty( $resetRoutes[
'email'] );
65 return $this->hasAnyRoutes;
69 if ( !$this->hasAnyRoutes() ) {
70 return 'apihelp-resetpassword-extended-description-noroutes';
72 return parent::getExtendedDescription();
76 if ( !$this->hasAnyRoutes() ) {
77 $this->
dieWithError(
'apihelp-resetpassword-description-noroutes',
'moduledisabled' );
88 $status = $this->passwordReset->isAllowed( $this->
getUser() );
89 if ( !$status->isOK() ) {
90 $this->
dieStatus( Status::wrap( $status ) );
93 $status = $this->passwordReset->execute(
94 $this->
getUser(), $params[
'user'], $params[
'email']
96 if ( !$status->isOK() ) {
97 $status->value =
null;
98 $this->
dieStatus( Status::wrap( $status ) );
102 $result->addValue( [
'resetpassword' ],
'status',
'success' );
106 return $this->hasAnyRoutes();
110 if ( !$this->hasAnyRoutes() ) {
117 if ( !$this->hasAnyRoutes() ) {
123 ParamValidator::PARAM_TYPE =>
'user',
124 UserDef::PARAM_ALLOWED_USER_TYPES => [
'name' ],
127 ParamValidator::PARAM_TYPE =>
'string',
131 $resetRoutes = $this->
getConfig()->get( MainConfigNames::PasswordResetRoutes );
132 if ( empty( $resetRoutes[
'username'] ) ) {
133 unset( $ret[
'user'] );
135 if ( empty( $resetRoutes[
'email'] ) ) {
136 unset( $ret[
'email'] );
144 $resetRoutes = $this->
getConfig()->get( MainConfigNames::PasswordResetRoutes );
146 if ( !empty( $resetRoutes[
'username'] ) ) {
147 $ret[
'action=resetpassword&user=Example&token=123ABC'] =
'apihelp-resetpassword-example-user';
149 if ( !empty( $resetRoutes[
'email'] ) ) {
150 $ret[
'action=resetpassword&user=user@example.com&token=123ABC'] =
151 'apihelp-resetpassword-example-email';
158 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Manage_authentication_data';
This abstract class implements many basic API functions, and is the base of all API classes.
dieWithError( $msg, $code=null, $data=null, $httpCode=0)
Abort execution with an error.
requireOnlyOneParameter( $params,... $required)
Die if 0 or more than one of a certain set of parameters is set and not false.
getResult()
Get the result object.
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
dieStatus(StatusValue $status)
Throw an ApiUsageException based on the Status object.
This is the main API class, used for both external and internal processing.
Reset password, with AuthManager.
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
getExtendedDescription()
Return the extended help text message.
getExamplesMessages()
Returns usage examples for this module.
isWriteMode()
Indicates whether this module requires write mode.
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
__construct(ApiMain $main, $action, PasswordReset $passwordReset)
needsToken()
Returns the token type this module requires in order to execute.
getHelpUrls()
Return links to more detailed help pages about the module.
A class containing constants representing the names of configuration variables.