class OmniAuth::FailureEndpoint

This simple Rack endpoint that serves as the default 'failure' mechanism for OmniAuth. If a strategy fails for any reason this endpoint will be invoked. The default behavior is to redirect to `/auth/failure` except in the case of a development `RACK_ENV`, in which case an exception will be raised.

Attributes

env[R]

Public Class Methods

call(env) click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 11
def self.call(env)
  new(env).call
end
new(env) click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 15
def initialize(env)
  @env = env
end

Public Instance Methods

call() click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 19
def call
  raise_out! if OmniAuth.config.failure_raise_out_environments.include?(ENV['RACK_ENV'].to_s)
  redirect_to_failure
end
origin_query_param() click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 40
def origin_query_param
  return '' unless env['omniauth.origin']

  "&origin=#{Rack::Utils.escape(env['omniauth.origin'])}"
end
raise_out!() click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 24
def raise_out!
  raise(env['omniauth.error'] || OmniAuth::Error.new(env['omniauth.error.type']))
end
redirect_to_failure() click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 28
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}"
  Rack::Response.new(['302 Moved'], 302, 'Location' => new_path).finish
end
strategy_name_query_param() click to toggle source
# File lib/omniauth/failure_endpoint.rb, line 34
def strategy_name_query_param
  return '' unless env['omniauth.error.strategy']

  "&strategy=#{env['omniauth.error.strategy'].name}"
end