rubygems/rubygems.org

View on GitHub
lib/clearance_backdoor.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class ClearanceBackdoor
  def initialize(app)
    @app = app
  end

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

  private

  def sign_in_through_the_back_door
    user_id = params["as"]
    return if user_id.nil?
    user = User.find(user_id)
    @env[:clearance].sign_in(user)
  end

  def params
    Rack::Utils.parse_query(@env["QUERY_STRING"])
  end
end