Sha256: 389000a2025148eea751e252cf99ccd39d32b1c4491ee5ee50c678e1ba07a5da

Contents?: true

Size: 927 Bytes

Versions: 22

Compression:

Stored size: 927 Bytes

Contents

module Clearance
  # Middleware which allows signing in by passing as=USER_ID in a query
  # parameter.
  #
  # Designed to eliminate time in integration tests wasted by visiting and
  # submitting the sign in form.
  #
  # Configuration:
  #
  #   # config/environments/test.rb
  #   MyRailsApp::Application.configure do
  #     # ...
  #     config.middleware.use Clearance::BackDoor
  #     # ...
  #   end
  #
  # Usage:
  #
  #   visit new_feedback_path(as: user)
  class BackDoor
    def initialize(app)
      @app = app
    end

    def call(env)
      sign_in_through_the_back_door(env)
      @app.call(env)
    end

    private

    def sign_in_through_the_back_door(env)
      params = Rack::Utils.parse_query(env['QUERY_STRING'])
      user_id = params['as']

      if user_id.present?
        user = Clearance.configuration.user_model.find(user_id)
        env[:clearance].sign_in(user)
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
clearance-1.11.0 lib/clearance/back_door.rb
clearance-1.10.1 lib/clearance/back_door.rb
clearance-1.9.0 lib/clearance/back_door.rb
clearance-1.8.1 lib/clearance/back_door.rb
clearance-1.8.0 lib/clearance/back_door.rb
clearance-1.7.0 lib/clearance/back_door.rb
clearance-1.6.1 lib/clearance/back_door.rb
clearance-1.6.0 lib/clearance/back_door.rb
clearance-1.5.1 lib/clearance/back_door.rb
clearance-1.5.0 lib/clearance/back_door.rb
clearance-1.4.3 lib/clearance/back_door.rb
clearance-1.4.2 lib/clearance/back_door.rb
clearance-1.4.1 lib/clearance/back_door.rb
clearance-1.4.0 lib/clearance/back_door.rb
clearance-1.3.0 lib/clearance/back_door.rb
clearance-1.2.1 lib/clearance/back_door.rb
clearance-1.2.0 lib/clearance/back_door.rb
clearance-1.1.0 lib/clearance/back_door.rb
clearance-1.0.1 lib/clearance/back_door.rb
clearance-1.0.0 lib/clearance/back_door.rb