Add transaction around user creation to safeguard against partially created users
This commit is contained in:
parent
157211038d
commit
724894316a
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Engelsystem\Database\Database;
|
||||||
use Engelsystem\Database\Db;
|
use Engelsystem\Database\Db;
|
||||||
use Engelsystem\Events\Listener\OAuth2;
|
use Engelsystem\Events\Listener\OAuth2;
|
||||||
use Engelsystem\Models\OAuth;
|
use Engelsystem\Models\OAuth;
|
||||||
|
@ -9,6 +10,7 @@ use Engelsystem\Models\User\PersonalData;
|
||||||
use Engelsystem\Models\User\Settings;
|
use Engelsystem\Models\User\Settings;
|
||||||
use Engelsystem\Models\User\State;
|
use Engelsystem\Models\User\State;
|
||||||
use Engelsystem\Models\User\User;
|
use Engelsystem\Models\User\User;
|
||||||
|
use Illuminate\Database\Connection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -37,6 +39,8 @@ function guest_register()
|
||||||
$config = config();
|
$config = config();
|
||||||
$request = request();
|
$request = request();
|
||||||
$session = session();
|
$session = session();
|
||||||
|
/** @var Connection $db */
|
||||||
|
$db = app(Database::class)->getConnection();
|
||||||
$is_oauth = $session->has('oauth2_connect_provider');
|
$is_oauth = $session->has('oauth2_connect_provider');
|
||||||
|
|
||||||
$msg = '';
|
$msg = '';
|
||||||
|
@ -211,6 +215,9 @@ function guest_register()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($valid) {
|
if ($valid) {
|
||||||
|
// Safeguard against partially created user data
|
||||||
|
$db->beginTransaction();
|
||||||
|
|
||||||
$user = new User([
|
$user = new User([
|
||||||
'name' => $nick,
|
'name' => $nick,
|
||||||
'password' => $password_hash,
|
'password' => $password_hash,
|
||||||
|
@ -295,6 +302,9 @@ function guest_register()
|
||||||
$user_angel_types_info[] = $angel_types[$selected_angel_type_id];
|
$user_angel_types_info[] = $angel_types[$selected_angel_type_id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Commit complete user data
|
||||||
|
$db->commit();
|
||||||
|
|
||||||
engelsystem_log(
|
engelsystem_log(
|
||||||
'User ' . User_Nick_render($user, true)
|
'User ' . User_Nick_render($user, true)
|
||||||
. ' signed up as: ' . join(', ', $user_angel_types_info)
|
. ' signed up as: ' . join(', ', $user_angel_types_info)
|
||||||
|
|
Loading…
Reference in New Issue