]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/UserController.php
Updated minimum php version from 7.3 to 7.4
[bookstack] / app / Http / Controllers / UserController.php
index a78f921f21e2ea187b906be6e3b4783d77d70e23..3903682eb41a2f11179a89b6abcdff9bcfc572a5 100644 (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;
@@ -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);