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;
'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,
+ ]);
}
/**
{
$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]);
$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,
];
$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,
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.
*/