Sha256: c5489310d7714e907ebe67ace370aac487db9d6b4566548583e82407e02a41e4

Contents?: true

Size: 1.54 KB

Versions: 33

Compression:

Stored size: 1.54 KB

Contents

module RailsBase
  module CaptureReferenceHelper
    CAPTURE_CONTROLLER_PATH = :referer_controller_path
    CAPTURE_ACTION_NAME = :referer_action_name
    CAPTURE_REFERRED_PATH = :referer_referred_path

    def authenticate_user!
      # only if request is a get and not authenticated
      capture_reference if request.method == 'GET' && !warden.authenticated?
      super()
    end

    def capture_reference
      return unless use_capture_reference?

      session[CAPTURE_CONTROLLER_PATH] = controller_path
      session[CAPTURE_ACTION_NAME] = action_name
      session[CAPTURE_REFERRED_PATH] = request.path
    end

    def capture_clear_reference_from_sesssion!
      session[CAPTURE_CONTROLLER_PATH] = nil
      session[CAPTURE_ACTION_NAME] = nil
      session[CAPTURE_REFERRED_PATH] = nil
    end

    def use_capture_reference?
      return false if skip_capture_reference?

      RailsBase.config.login_behavior.fallback_to_referred
    end

    def skip_capture_reference!
      @__skip_capture_reference = true
    end

    def skip_capture_reference?
      @__skip_capture_reference.presence
    end

    def reference_redirect
      { controller: session[CAPTURE_CONTROLLER_PATH], action: session[CAPTURE_ACTION_NAME], path: session[CAPTURE_REFERRED_PATH] }
    end

    def capture_and_clear_reference_redirect!
      temp = reference_redirect
      capture_clear_reference_from_sesssion!
      temp[:path]
    end

    def redirect_from_reference
      return nil unless use_capture_reference?

      capture_and_clear_reference_redirect!
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
rails_base-0.82.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.81.1 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.81.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.80.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.6 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.5 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.4 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.3 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.2 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.1 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.75.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.74.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.73.1 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.73.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.72.1 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.72.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.71.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.70.1.pre app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.70.0 app/helpers/rails_base/capture_reference_helper.rb
rails_base-0.61.0 app/helpers/rails_base/capture_reference_helper.rb