*
* @file
*/
+use MediaWiki\Logger\LoggerFactory;
/**
* Unit to authenticate account registration attempts to the current wiki.
'You cannot create a new account because you are blocked',
'blocked',
0,
- array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $this->getUser()->getBlock() ) )
+ [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $this->getUser()->getBlock() ) ]
);
}
$params = $this->extractRequestParams();
- // Init session if necessary
- if ( session_id() == '' ) {
- wfSetupSession();
- }
+ // Make sure session is persisted
+ MediaWiki\Session\SessionManager::getGlobalSession()->persist();
if ( $params['mailpassword'] && !$params['email'] ) {
$this->dieUsageMsg( 'noemail' );
$context = new DerivativeContext( $this->getContext() );
$context->setRequest( new DerivativeRequest(
$this->getContext()->getRequest(),
- array(
+ [
'type' => 'signup',
'uselang' => $params['language'],
'wpName' => $params['name'],
'wpCreateaccountToken' => $params['token'],
'wpCreateaccount' => $params['mailpassword'] ? null : '1',
'wpCreateaccountMail' => $params['mailpassword'] ? '1' : null
- )
+ ]
) );
$loginForm = new LoginForm();
$loginForm->setContext( $context );
- Hooks::run( 'AddNewAccountApiForm', array( $this, $loginForm ) );
+ Hooks::run( 'AddNewAccountApiForm', [ $this, $loginForm ] );
$loginForm->load();
- $status = $loginForm->addNewaccountInternal();
- $result = array();
+ $status = $loginForm->addNewAccountInternal();
+ LoggerFactory::getInstance( 'authmanager' )->info( 'Account creation attempt via API', [
+ 'event' => 'accountcreation',
+ 'status' => $status,
+ ] );
+ $result = [];
if ( $status->isGood() ) {
// Success!
$user = $status->getValue();
'createaccount-title',
'createaccount-text'
) );
- } elseif ( $this->getConfig()->get( 'EmailAuthentication' ) && Sanitizer::validateEmail( $user->getEmail() ) ) {
+ } elseif ( $this->getConfig()->get( 'EmailAuthentication' ) &&
+ Sanitizer::validateEmail( $user->getEmail() )
+ ) {
// Send out an email authentication message if needed
$status->merge( $user->sendConfirmationMail() );
}
// Save settings (including confirmation token)
$user->saveSettings();
- Hooks::run( 'AddNewAccount', array( $user, $params['mailpassword'] ) );
+ Hooks::run( 'AddNewAccount', [ $user, $params['mailpassword'] ] );
if ( $params['mailpassword'] ) {
$logAction = 'byemail';
// Token was incorrect, so add it to result, but don't throw an exception
// since not having the correct token is part of the normal
// flow of events.
- $result['token'] = LoginForm::getCreateaccountToken();
+ $result['token'] = LoginForm::getCreateaccountToken()->toString();
$result['result'] = 'NeedToken';
+ $this->setWarning( 'Fetching a token via action=createaccount is deprecated. ' .
+ 'Use action=query&meta=tokens&type=createaccount instead.' );
+ $this->logFeatureUsage( 'action=createaccount&!token' );
} elseif ( !$status->isOK() ) {
// There was an error. Die now.
$this->dieStatus( $status );
}
// Give extensions a chance to modify the API result data
- Hooks::run( 'AddNewAccountApiResult', array( $this, $loginForm, &$result ) );
+ Hooks::run( 'AddNewAccountApiResult', [ $this, $loginForm, &$result ] );
$apiResult->addValue( null, 'createaccount', $result );
}
}
public function getAllowedParams() {
- return array(
- 'name' => array(
+ return [
+ 'name' => [
ApiBase::PARAM_TYPE => 'user',
ApiBase::PARAM_REQUIRED => true
- ),
- 'password' => array(
+ ],
+ 'password' => [
ApiBase::PARAM_TYPE => 'password',
- ),
+ ],
'domain' => null,
- 'token' => null,
- 'email' => array(
+ 'token' => [
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => false, // for BC
+ ApiBase::PARAM_HELP_MSG => [ 'api-help-param-token', 'createaccount' ],
+ ],
+ 'email' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => $this->getConfig()->get( 'EmailConfirmToEdit' ),
- ),
+ ],
'realname' => null,
- 'mailpassword' => array(
+ 'mailpassword' => [
ApiBase::PARAM_TYPE => 'boolean',
ApiBase::PARAM_DFLT => false
- ),
+ ],
'reason' => null,
'language' => null
- );
+ ];
}
protected function getExamplesMessages() {
- return array(
+ return [
'action=createaccount&name=testuser&password=test123'
=> 'apihelp-createaccount-example-pass',
'action=createaccount&name=testmailuser&mailpassword=true&reason=MyReason'
=> 'apihelp-createaccount-example-mail',
- );
+ ];
}
public function getHelpUrls() {