class UserController extends Controller
{
- protected $userRepo;
- protected $imageRepo;
+ protected UserRepo $userRepo;
+ protected ImageRepo $imageRepo;
/**
* UserController constructor.
{
$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);
$this->setPageTitle(trans('settings.users'));
- $users->appends($listDetails);
+ $users->appends(['search' => $listDetails['search']]);
return view('users.index', [
'users' => $users,
$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,
$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'],
*/
public function changeSort(Request $request, string $id, string $type)
{
- $validSortTypes = ['books', 'bookshelves', 'shelf_books'];
+ $validSortTypes = ['books', 'bookshelves', 'shelf_books', 'users', 'roles'];
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',
+ ];
+ if (!in_array($sort, $validSorts)) {
$sort = 'name';
}