Files
sure/app/controllers/concerns/safe_pagination.rb
Julien Orain 777fbdc4ca feat(settings): add pagination to imports and exports pages (#598)
* feat(settings): split imports and exports

* feat(security): sanitize pagination params to prevent abuse

* fix(settings): fix syntax in settings nav

* feat(settings): internationalize family_exports and imports UI strings

* fix(settings): fix coderabbit review

* fix(settings): fix coderabbit review

* fix(settings): fix coderabbit review

* Change default per_page value from 20 to 10

Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Add `/family_export` to navigation

* Consistency with old defaults

* Align `safe_per_page` even if not DRY

---------

Signed-off-by: Julien Orain <julien.orain@gmail.com>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: JulienOrain <your-github-email@example.com>
Co-authored-by: Juan José Mata <jjmata@jjmata.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2026-01-20 00:11:22 +01:00

16 lines
373 B
Ruby

# frozen_string_literal: true
module SafePagination
extend ActiveSupport::Concern
private
def safe_per_page(default = 10)
allowed_values = [ 10, 20, 30, 50, 100 ]
per_page = params[:per_page].to_i
return default if per_page <= 0
allowed_values.include?(per_page) ? per_page : allowed_values.min_by { |v| (v - per_page).abs }
end
end