X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/7a8505f812bb430394aa218cd477422b2beaf9df..refs/heads/ldap_host_failover:/app/Http/Controllers/UserController.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a22b0394a..895481d02 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -18,8 +18,8 @@ use Illuminate\Validation\ValidationException; class UserController extends Controller { - protected $userRepo; - protected $imageRepo; + protected UserRepo $userRepo; + protected ImageRepo $imageRepo; /** * UserController constructor. @@ -48,8 +48,8 @@ class UserController extends Controller $users->appends($listDetails); return view('users.index', [ - 'users' => $users, - 'listDetails' => $listDetails + 'users' => $users, + 'listDetails' => $listDetails, ]); } @@ -81,9 +81,9 @@ class UserController extends Controller $passwordRequired = ($authMethod === 'standard' && !$sendInvite); $validationRules = [ - 'name' => ['required'], + 'name' => ['required', 'max:100'], 'email' => ['required', 'email', 'unique:users,email'], - 'language' => ['string'], + 'language' => ['string', 'max:15', 'alpha_dash'], 'roles' => ['array'], 'roles.*' => ['integer'], 'password' => $passwordRequired ? ['required', Password::default()] : null, @@ -139,11 +139,11 @@ class UserController extends Controller $this->checkPermissionOrCurrentUser('users-manage', $id); $validated = $this->validate($request, [ - 'name' => ['min:2'], + 'name' => ['min:2', 'max:100'], 'email' => ['min:2', 'email', 'unique:users,email,' . $id], 'password' => ['required_with:password_confirm', Password::default()], 'password-confirm' => ['same:password', 'required_with:password'], - 'language' => ['string'], + 'language' => ['string', 'max:15', 'alpha_dash'], 'roles' => ['array'], 'roles.*' => ['integer'], 'external_auth_id' => ['string'], @@ -289,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']; + } elseif ($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. */