X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/bb9cd9d61093ea0b541f354fdd03c97aab1fd954..refs/pull/3247/head:/app/Http/Controllers/UserController.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a78f921f2..3903682eb 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -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; @@ -61,6 +62,7 @@ class UserController extends Controller $this->checkPermission('users-manage'); $authMethod = config('auth.method'); $roles = $this->userRepo->getAllRoles(); + $this->setPageTitle(trans('settings.users_add_new')); return view('users.create', ['authMethod' => $authMethod, 'roles' => $roles]); } @@ -75,8 +77,9 @@ class UserController extends Controller { $this->checkPermission('users-manage'); $validationRules = [ - 'name' => ['required'], - 'email' => ['required', 'email', 'unique:users,email'], + 'name' => ['required'], + 'email' => ['required', 'email', 'unique:users,email'], + 'setting' => ['array'], ]; $authMethod = config('auth.method'); @@ -99,20 +102,30 @@ 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); - } + // Save user-specific settings + if ($request->filled('setting')) { + foreach ($request->get('setting') as $key => $value) { + setting()->putUser($user, $key, $value); + } + } + + if ($sendInvite) { + $this->inviteService->sendInvitation($user); + } + + if ($request->filled('roles')) { + $roles = $request->get('roles'); + $this->userRepo->setUserRoles($user, $roles); + } - $this->userRepo->downloadAndAssignUserAvatar($user); + $this->userRepo->downloadAndAssignUserAvatar($user); - $this->logActivity(ActivityType::USER_CREATE, $user); + $this->logActivity(ActivityType::USER_CREATE, $user); + }); return redirect('/settings/users'); } @@ -194,7 +207,7 @@ class UserController extends Controller $user->external_auth_id = $request->get('external_auth_id'); } - // Save an user-specific settings + // Save user-specific settings if ($request->filled('setting')) { foreach ($request->get('setting') as $key => $value) { setting()->putUser($user, $key, $value);