Sha256: b7f2c13f30a1a203b17f4550a1493ba565f77bcc4e1ed13ccf6647681c5e8b47

Contents?: true

Size: 788 Bytes

Versions: 1

Compression:

Stored size: 788 Bytes

Contents

# Alternative FailureEndpoint for OmniAuth,
# which preserves all parameters passed to provider/callback
#
module OmniAuth
  class FailureEndpointEx < FailureEndpoint

    def redirect_to_failure
      message_key = env['omniauth.error.type']
      new_path = "#{env['SCRIPT_NAME']}#{OmniAuth.config.path_prefix}/failure?message=#{message_key}#{origin_query_param}#{strategy_name_query_param}#{extra_query_param}"
      Rack::Response.new(["302 Moved"], 302, 'Location' => new_path).finish
    end

    # Returns extra query params passed to callback.
    #
    def extra_query_param
      return "" unless env['omniauth.params']
      env['omniauth.params'].map{|k,v| "&#{k}=#{Rack::Utils.escape(v)}"}.join
    end

  end # class FailureEndpointEx < FailureEndpoint
end # module OmniAuth

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aerogel-users-1.4.3 lib/aerogel/users/omniauth-failure_endpoint_ex.rb