/** * Setup Administrative User * * This should be the last step, before the user is created also the * application secret will created. */ public function actionAdmin() { // Admin account already created if (User::find()->count() > 0) { return $this->redirect(Yii::$app->getModule('installer')->getNextConfigStepUrl()); } $userModel = new User(); $userModel->scenario = 'registration_email'; $userPasswordModel = new Password(); $userPasswordModel->scenario = 'registration'; $profileModel = $userModel->profile; $profileModel->scenario = 'registration'; // Build Form Definition $definition = array(); $definition['elements'] = array(); // Add User Form $definition['elements']['User'] = array('type' => 'form', 'elements' => array('username' => array('type' => 'text', 'class' => 'form-control', 'maxlength' => 25), 'email' => array('type' => 'text', 'class' => 'form-control', 'maxlength' => 100))); // Add User Password Form $definition['elements']['Password'] = array('type' => 'form', 'elements' => array('newPassword' => array('type' => 'password', 'class' => 'form-control', 'maxlength' => 255), 'newPasswordConfirm' => array('type' => 'password', 'class' => 'form-control', 'maxlength' => 255))); // Add Profile Form $definition['elements']['Profile'] = array_merge(array('type' => 'form'), $profileModel->getFormDefinition()); // Get Form Definition $definition['buttons'] = array('save' => array('type' => 'submit', 'class' => 'btn btn-primary', 'label' => Yii::t('InstallerModule.controllers_ConfigController', 'Create Admin Account'))); $form = new \humhub\compat\HForm($definition); $form->models['User'] = $userModel; $form->models['Password'] = $userPasswordModel; $form->models['Profile'] = $profileModel; if ($form->submitted('save') && $form->validate()) { $form->models['User']->status = User::STATUS_ENABLED; $form->models['User']->language = ''; $form->models['User']->tags = 'Administration, Support, HumHub'; $form->models['User']->last_activity_email = new \yii\db\Expression('NOW()'); $form->models['User']->save(); $form->models['Profile']->user_id = $form->models['User']->id; $form->models['Profile']->title = "System Administration"; $form->models['Profile']->save(); // Save User Password $form->models['Password']->user_id = $form->models['User']->id; $form->models['Password']->setPassword($form->models['Password']->newPassword); $form->models['Password']->save(); $userId = $form->models['User']->id; Group::getAdminGroup()->addUser($form->models['User']); // Reload User $adminUser = User::findOne(['id' => 1]); // Switch Identity Yii::$app->user->switchIdentity($adminUser); // Create Welcome Space $space = new Space(); $space->name = Yii::t("InstallerModule.controllers_ConfigController", "Welcome Space"); $space->description = Yii::t("InstallerModule.controllers_ConfigController", "Your first sample space to discover the platform."); $space->join_policy = Space::JOIN_POLICY_FREE; $space->visibility = Space::VISIBILITY_ALL; $space->created_by = $adminUser->id; $space->auto_add_new_members = 1; $space->color = '#6fdbe8'; $space->save(); // activate all available modules for this space foreach ($space->getAvailableModules() as $module) { $space->enableModule($module->id); } // Add Some Post to the Space $post = new \humhub\modules\post\models\Post(); $post->message = Yii::t("InstallerModule.controllers_ConfigController", "Yay! I've just installed HumHub ;Cool;"); $post->content->container = $space; $post->content->visibility = \humhub\modules\content\models\Content::VISIBILITY_PUBLIC; $post->save(); return $this->redirect(Yii::$app->getModule('installer')->getNextConfigStepUrl()); } return $this->render('admin', array('hForm' => $form)); }