X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c6ad16dba657c82512ae495a4a38b99b8cfa9eeb..refs/pull/3598/head:/app/Http/Controllers/UserController.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 3b443aa81..9a2f2c867 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -3,6 +3,8 @@ namespace BookStack\Http\Controllers; use BookStack\Auth\Access\SocialAuthService; +use BookStack\Auth\Queries\AllUsersPaginatedAndSorted; +use BookStack\Auth\Role; use BookStack\Auth\User; use BookStack\Auth\UserRepo; use BookStack\Exceptions\ImageUploadException; @@ -39,12 +41,16 @@ class UserController extends Controller 'search' => $request->get('search', ''), 'sort' => $request->get('sort', 'name'), ]; - $users = $this->userRepo->getAllUsersPaginatedAndSorted(20, $listDetails); + + $users = (new AllUsersPaginatedAndSorted())->run(20, $listDetails); $this->setPageTitle(trans('settings.users')); $users->appends($listDetails); - return view('users.index', ['users' => $users, 'listDetails' => $listDetails]); + return view('users.index', [ + 'users' => $users, + 'listDetails' => $listDetails, + ]); } /** @@ -54,7 +60,7 @@ class UserController extends Controller { $this->checkPermission('users-manage'); $authMethod = config('auth.method'); - $roles = $this->userRepo->getAllRoles(); + $roles = Role::query()->orderBy('display_name', 'asc')->get(); $this->setPageTitle(trans('settings.users_add_new')); return view('users.create', ['authMethod' => $authMethod, 'roles' => $roles]); @@ -75,12 +81,12 @@ class UserController extends Controller $passwordRequired = ($authMethod === 'standard' && !$sendInvite); $validationRules = [ - 'name' => ['required'], - 'email' => ['required', 'email', 'unique:users,email'], - 'language' => ['string'], + 'name' => ['required'], + 'email' => ['required', 'email', 'unique:users,email'], + 'language' => ['string'], 'roles' => ['array'], 'roles.*' => ['integer'], - 'password' => $passwordRequired ? ['required', Password::default()] : null, + 'password' => $passwordRequired ? ['required', Password::default()] : null, 'password-confirm' => $passwordRequired ? ['required', 'same:password'] : null, 'external_auth_id' => $externalAuth ? ['required'] : null, ]; @@ -109,7 +115,7 @@ class UserController extends Controller $activeSocialDrivers = $socialAuthService->getActiveDrivers(); $mfaMethods = $user->mfaValues->groupBy('method'); $this->setPageTitle(trans('settings.user_profile')); - $roles = $this->userRepo->getAllRoles(); + $roles = Role::query()->orderBy('display_name', 'asc')->get(); return view('users.edit', [ 'user' => $user, @@ -283,6 +289,27 @@ class UserController extends Controller return response('', 204); } + public function updateCodeLanguageFavourite(Request $request) + { + $validated = $this->validate($request, [ + 'language' => ['required', 'string', 'max:20'], + 'active' => ['required', 'bool'], + ]); + + $currentFavoritesStr = setting()->getForCurrentUser('code-language-favourites', ''); + $currentFavorites = array_filter(explode(',', $currentFavoritesStr)); + + $isFav = in_array($validated['language'], $currentFavorites); + if (!$isFav && $validated['active']) { + $currentFavorites[] = $validated['language']; + } else if ($isFav && !$validated['active']) { + $index = array_search($validated['language'], $currentFavorites); + array_splice($currentFavorites, $index, 1); + } + + setting()->putUser(user(), 'code-language-favourites', implode(',', $currentFavorites)); + } + /** * Changed the stored preference for a list sort order. */