0
0
Fork 0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-05-16 13:31:25 +00:00

fix(User Creation): do not persist the user if invitation fails

- Wrap the user creation process in a transaction
- Add test
This commit is contained in:
julesdevops 2022-01-19 20:46:38 +01:00
parent 2aace16704
commit c9beacbfbf
2 changed files with 60 additions and 11 deletions
app/Http/Controllers

View file

@ -12,6 +12,7 @@ use BookStack\Exceptions\UserUpdateException;
use BookStack\Uploads\ImageRepo;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Validation\Rules\Password;
use Illuminate\Validation\ValidationException;
@ -99,20 +100,23 @@ class UserController extends Controller
}
$user->refreshSlug();
$user->save();
if ($sendInvite) {
$this->inviteService->sendInvitation($user);
}
DB::transaction(function () use ($user, $sendInvite, $request) {
$user->save();
if ($request->filled('roles')) {
$roles = $request->get('roles');
$this->userRepo->setUserRoles($user, $roles);
}
if ($sendInvite) {
$this->inviteService->sendInvitation($user);
}
$this->userRepo->downloadAndAssignUserAvatar($user);
$this->logActivity(ActivityType::USER_CREATE, $user);
if ($request->filled('roles')) {
$roles = $request->get('roles');
$this->userRepo->setUserRoles($user, $roles);
}
$this->userRepo->downloadAndAssignUserAvatar($user);
$this->logActivity(ActivityType::USER_CREATE, $user);
});
return redirect('/settings/users');
}