Skip to content

Commit

Permalink
Dev: Some cleanup in installer
Browse files Browse the repository at this point in the history
  • Loading branch information
olleharstedt committed Feb 23, 2018
1 parent 2a8be51 commit ba9e579
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 50 deletions.
72 changes: 22 additions & 50 deletions application/controllers/InstallerController.php
Expand Up @@ -618,12 +618,7 @@ private function stepOptionalConfiguration()
$this->loadHelper('surveytranslator');
$aData['model'] = $model = new InstallerConfigForm('optional');
// Backup the default, needed only for $sDefaultAdminPassword
$sDefaultAdminUserName = $model->adminLoginName;
$sDefaultAdminPassword = $model->adminLoginPwd;
$sDefaultAdminRealName = $model->adminName;
$sDefaultSiteName = $model->siteName;
$sDefaultSiteLanguage = $model->surveylang;
$sDefaultAdminEmail = $model->adminEmail;
if(!is_null(Yii::app()->request->getPost('InstallerConfigForm')))
{
$model->attributes = Yii::app()->request->getPost('InstallerConfigForm');
Expand Down Expand Up @@ -657,33 +652,11 @@ private function stepOptionalConfiguration()
try {

if (User::model()->count() > 0) {
//throw new Exception('Already admin in system');
//safeDie('Fatal error: Already an admin user in the system.');
$user = User::model()->findByPk(1);
if (empty($user)) {
throw new Exception('There is an admin user, but not with id 1');
}
} else {
$user = new User;

// Save permissions
$permission = new Permission;
$permission->entity_id = 0;
$permission->entity = 'global';
$permission->uid = $user->uid;
$permission->permission = 'superadmin';
$permission->read_p = 1;
$permission->save();

// Save global settings
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'SessionName', 'stg_value' => $this->_getRandomString()));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'sitename', 'stg_value' => $sSiteName));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'siteadminname', 'stg_value' => $sAdminRealName));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'siteadminemail', 'stg_value' => $sAdminEmail));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'siteadminbounce', 'stg_value' => $sAdminEmail));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'defaultlang', 'stg_value' => $sSiteLanguage));
throw new Exception('Already admin in system');
}

// Save user
$user = new User;
// Fix UserID to 1 for MySQL even if installed in master-master configuration scenario
if (in_array($this->connection->getDriverName(), array('mysql', 'mysqli'))) {
$user->uid = 1;
Expand All @@ -696,15 +669,31 @@ private function stepOptionalConfiguration()
$user->email = $sAdminEmail;
$user->save();

// only continue if we're error free otherwise setup is broken.
// Save permissions
$permission = new Permission;
$permission->entity_id = 0;
$permission->entity = 'global';
$permission->uid = $user->uid;
$permission->permission = 'superadmin';
$permission->read_p = 1;
$permission->save();

// Save global settings
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'SessionName', 'stg_value' => $this->_getRandomString()));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'sitename', 'stg_value' => $sSiteName));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'siteadminname', 'stg_value' => $sAdminRealName));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'siteadminemail', 'stg_value' => $sAdminEmail));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'siteadminbounce', 'stg_value' => $sAdminEmail));
$this->connection->createCommand()->insert("{{settings_global}}", array('stg_name' => 'defaultlang', 'stg_value' => $sSiteLanguage));

Yii::app()->session['deletedirectories'] = true;

$aData['title'] = gT("Success!");
$aData['descp'] = gT("LimeSurvey has been installed successfully.");
$aData['classesForStep'] = array('off', 'off', 'off', 'off', 'off', 'off');
$aData['classesForStep'] = array('off','off','off','off','off','off');
$aData['progressValue'] = 100;
$aData['user'] = $sAdminUserName;
if ($sDefaultAdminPassword == $sAdminPassword) {
if ($sDefaultAdminPassword==$sAdminPassword) {
$aData['pwd'] = $sAdminPassword;
} else {
$aData['pwd'] = gT("The password you have chosen at the optional settings step.");
Expand All @@ -720,23 +709,6 @@ private function stepOptionalConfiguration()
throw new Exception(sprintf('Could not add optional settings: %s.', $e));
}

Yii::app()->session['deletedirectories'] = true;

$aData['title'] = gT("Success!");
$aData['descp'] = gT("LimeSurvey has been installed successfully.");
$aData['classesForStep'] = array('off','off','off','off','off','off');
$aData['progressValue'] = 100;
$aData['user'] = $sAdminUserName;
if($sDefaultAdminPassword==$sAdminPassword){
$aData['pwd'] = $sAdminPassword;
}else{
$aData['pwd'] = gT("The password you have chosen at the optional settings step.");
}

$this->_writeConfigFile();

$this->render('/installer/success_view', $aData);
return;
}
} else {
unset($aData['confirmation']);
Expand Down
16 changes: 16 additions & 0 deletions application/models/User.php
Expand Up @@ -527,4 +527,20 @@ public function search()
));
}

/**
* Set user password with hash
*
* @param string $sPassword The clear text password
* @return \User
*/
public function setPassword($sPassword, $save = false)
{
// NB: Different method in 2.73 vs 3.0.
$sPasswordHash = hash('sha256', $sPassword);
$this->password = $sPasswordHash;
if ($save) {
$this->save();
}
return $this; // Return current object
}
}

0 comments on commit ba9e579

Please sign in to comment.