16 private $userGroupManager;
25 return [
'services',
'extension-tables' ];
30 return [
'created-user-names' ];
35 $status = $this->createUser( $this->
getOption(
'AdminName' ) );
36 $createdUserNames = [];
37 if ( $status->isOK() && $status->value !==
null ) {
38 $createdUserNames[] = $status->value;
40 $this->
getContext()->provide(
'created-user-names', $createdUserNames );
44 private function createUser(
string $name ):
Status {
45 $user = $this->userFactory->newFromName( $name );
49 return Status::newFatal(
'config-admin-error-user', $name );
52 if ( $user->idForName() == 0 ) {
53 $user->addToDatabase();
55 $password = $this->getOption(
'AdminPassword' );
56 $status = $user->changeAuthenticationData( [
57 'username' => $user->getName(),
58 'password' => $password,
59 'retype' => $password,
61 if ( !$status->isGood() ) {
62 return Status::newFatal(
'config-admin-error-password',
63 $name, $status->getWikiText(
false,
false, $this->getOption(
'UserLang' ) ) );
66 $this->userGroupManager->addUserToGroup( $user,
'sysop' );
67 $this->userGroupManager->addUserToGroup( $user,
'bureaucrat' );
68 $this->userGroupManager->addUserToGroup( $user,
'interface-admin' );
69 if ( $this->getOption(
'AdminEmail' ) ) {
70 $user->setEmail( $this->getOption(
'AdminEmail' ) );
72 $user->saveSettings();
75 $ssUpdate = SiteStatsUpdate::factory( [
'users' => 1 ] );
76 $ssUpdate->doUpdate();
78 return Status::newGood( $user->getName() );
81 return Status::newGood();
84 private function initServices( MediaWikiServices $services ) {
85 $this->userFactory = $services->getUserFactory();
86 $this->userGroupManager = $services->getUserGroupManager();