Sha256: a791741d6d84adcff9c4b4b40e08ddf99728a523f481eb90398c2f643798182e

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

class BMC::FiltersController < BMC::ApplicationController
  skip_before_action :verify_authenticity_token, raise: false
  skip_before_action :authenticate_user!,        raise: false
  skip_after_action  :verify_authorized,         raise: false
  skip_after_action  :verify_policy_scoped,      raise: false

  def self.parse(json)
    JSON.parse(json.to_s).with_indifferent_access
  rescue JSON::ParserError
    {}.with_indifferent_access
  end

  def create
    filters = self.class.parse(cookies[:filters])
    filters.merge! params.fetch(:filters, {}).permit!.to_h

    cookies[:filters] = {
      :value   => JSON.dump(filters),
      :expires => 1.year.from_now,
      :path    => "/",
    }

    redirect_to back_url
  end

  private

  def back_url
    url = [
      params[:form_url],
      request.referer,
      main_app.try(:root_path),
      "/",
    ].find(&:present?)

    # Delete page param
    base, query_string = url.split("?")
    query_string = query_string.to_s.split("&").delete_if { |p| p.include?("page=") }.join("&")
    query_string = "?#{query_string}" if query_string.present?
    base + query_string
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bmc-1.6.2 app/controllers/bmc/filters_controller.rb
bmc-1.6.1 app/controllers/bmc/filters_controller.rb
bmc-1.6.0 app/controllers/bmc/filters_controller.rb