Skip to content

Commit e49a4f4

Browse files
Implemented Carbon dating, fixed default groups not being added when using SQL Server, fixed potential crash point.
1 parent 7602d9f commit e49a4f4

1 file changed

Lines changed: 17 additions & 20 deletions

File tree

userfrosting/controllers/InstallController.php

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,19 @@ public function setupMasterAccount(){
233233

234234
$user->id = $this->_app->config('user_id_master');
235235

236+
// If using SQL Server or Azure SQL Server, store the user now.
237+
if (\Illuminate\Database\Capsule\Manager::connection()->getPdo()->getAttribute(\PDO::ATTR_DRIVER_NAME) == "sqlsrv") {
238+
// Manually insert master user to overcome session IDENTITY_INSERT restriction caused by AUTO_NUMBER specification.
239+
$tableName = $user->getTable();
240+
$values = $user->export();
241+
$values['created_at'] = \Carbon\Carbon::now();
242+
$values['updated_at'] = \Carbon\Carbon::now();
243+
\Illuminate\Database\Capsule\Manager::statement("SET IDENTITY_INSERT [$tableName] ON; INSERT INTO [$tableName] (id, user_name, display_name, email, password, flag_verified, locale, primary_group_id, title, created_at, updated_at) VALUES (:id, :user_name, :display_name, :email, :password, :flag_verified, :locale, :primary_group_id, :title, :created_at, :updated_at);", $values);
244+
245+
// Get master user back from database
246+
$user = User::where('id', $this->_app->config('user_id_master'))->first();
247+
}
248+
236249
// Add user to default groups, including default primary group
237250
$defaultGroups = Group::where('is_default', GROUP_DEFAULT)->get();
238251
$user->addGroup($primaryGroup->id);
@@ -241,27 +254,11 @@ public function setupMasterAccount(){
241254
$user->addGroup($group_id);
242255
}
243256

244-
// If using SQL Server or Azure SQL Server, use this alternative insert method.
245-
if (\Illuminate\Database\Capsule\Manager::connection()->getPdo()->getAttribute(\PDO::ATTR_DRIVER_NAME) == "sqlsrv") {
246-
// Manually build insert statement to overcome session IDENTITY_INSERT restriction.
247-
$tableName = $user->getTable();
248-
$values = $user->export();
249-
$values['created_at'] = date("Y-m-d h:i:s");
250-
$values['updated_at'] = date("Y-m-d h:i:s");
251-
\Illuminate\Database\Capsule\Manager::statement("SET IDENTITY_INSERT [$tableName] ON; INSERT INTO [$tableName] (id, user_name, display_name, email, password, flag_verified, locale, primary_group_id, title, created_at, updated_at) VALUES (:id, :user_name, :display_name, :email, :password, :flag_verified, :locale, :primary_group_id, :title, :created_at, :updated_at);", $values);
257+
// Add sign-up event
258+
$user->newEventSignUp();
252259

253-
// Add sign-up event
254-
$user = User::where('id', 1)->first();
255-
$user->newEventSignUp();
256-
$user->save();
257-
}
258-
else {
259-
// Add sign-up event
260-
$user->newEventSignUp();
261-
262-
// Store new user to database
263-
$user->save();
264-
}
260+
// Store new user to database
261+
$user->save();
265262

266263
// No activation required
267264
$ms->addMessageTranslated("success", "ACCOUNT_REGISTRATION_COMPLETE_TYPE1");

0 commit comments

Comments
 (0)