namespace BookStack\Http\Controllers;
use BookStack\Auth\Access\SocialAuthService;
-use BookStack\Auth\Queries\AllUsersPaginatedAndSorted;
+use BookStack\Auth\Queries\UsersAllPaginatedAndSorted;
use BookStack\Auth\Role;
use BookStack\Auth\User;
use BookStack\Auth\UserRepo;
{
$this->checkPermission('users-manage');
$listDetails = [
- 'order' => $request->get('order', 'asc'),
'search' => $request->get('search', ''),
- 'sort' => $request->get('sort', 'name'),
+ 'sort' => setting()->getForCurrentUser('users_sort', 'name'),
+ 'order' => setting()->getForCurrentUser('users_sort_order', 'asc'),
];
- $users = (new AllUsersPaginatedAndSorted())->run(20, $listDetails);
+ $users = (new UsersAllPaginatedAndSorted())->run(20, $listDetails);
$this->setPageTitle(trans('settings.users'));
- $users->appends($listDetails);
+ $users->appends(['search' => $listDetails['search']]);
return view('users.index', [
'users' => $users,
*/
public function changeSort(Request $request, string $id, string $type)
{
- $validSortTypes = ['books', 'bookshelves', 'shelf_books'];
+ $validSortTypes = ['books', 'bookshelves', 'shelf_books', 'users', 'roles', 'webhooks'];
if (!in_array($type, $validSortTypes)) {
return redirect()->back(500);
}
$this->checkPermissionOrCurrentUser('users-manage', $userId);
$sort = $request->get('sort');
- if (!in_array($sort, ['name', 'created_at', 'updated_at', 'default'])) {
+ // TODO - Need to find a better way to validate sort options
+ // Probably better to do a simple validation here then validate at usage.
+ $validSorts = [
+ 'name', 'created_at', 'updated_at', 'default', 'email', 'last_activity_at', 'display_name',
+ 'users_count', 'permissions_count', 'endpoint', 'active',
+ ];
+ if (!in_array($sort, $validSorts)) {
$sort = 'name';
}