class OmniAuth::Strategies::Identity

The identity strategy allows you to provide simple internal user authentication using the same process flow that you use for external OmniAuth providers.

Public Instance Methods

callback_phase() click to toggle source
Calls superclass method
# File lib/omniauth/strategies/identity.rb, line 30
def callback_phase
  return fail!(:invalid_credentials) unless identity
  super
end
identity() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 88
def identity
  if options.locate_conditions.is_a? Proc
    conditions = instance_exec(request, &options.locate_conditions)
    conditions.to_hash
  else
    conditions = options.locate_conditions.to_hash
  end
  @identity ||= model.authenticate(conditions, request['password'] )
end
model() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 98
def model
  options[:model] || ::Identity
end
on_registration_path?() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 84
def on_registration_path?
  on_path?(registration_path)
end
other_phase() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 35
def other_phase
  if on_registration_path?
    if request.get?
      registration_form
    elsif request.post?
      registration_phase
    end
  else
    call_app!
  end
end
registration_form() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 47
def registration_form
  if options[:on_registration]
    options[:on_registration].call(self.env)
  else
    OmniAuth::Form.build(:title => 'Register Identity') do |f|
      options[:fields].each do |field|
        f.text_field field.to_s.capitalize, field.to_s
      end
      f.password_field 'Password', 'password'
      f.password_field 'Confirm Password', 'password_confirmation'
    end.to_response
  end
end
registration_path() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 80
def registration_path
  options[:registration_path] || "#{path_prefix}/#{name}/register"
end
registration_phase() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 61
def registration_phase
  attributes = (options[:fields] + [:password, :password_confirmation]).inject({}){|h,k| h[k] = request[k.to_s]; h}
  @identity = model.create(attributes)
  if @identity.persisted?
    env['PATH_INFO'] = callback_path
    callback_phase
  else
    if options[:on_failed_registration]
      self.env['omniauth.identity'] = @identity
      options[:on_failed_registration].call(self.env)
    else
      registration_form
    end
  end
end
request_phase() click to toggle source
# File lib/omniauth/strategies/identity.rb, line 15
def request_phase
  if options[:on_login]
    options[:on_login].call(self.env)
  else
    OmniAuth::Form.build(
      :title => (options[:title] || "Identity Verification"),
      :url => callback_path
    ) do |f|
      f.text_field 'Login', 'auth_key'
      f.password_field 'Password', 'password'
      f.html "<p align='center'><a href='#{registration_path}'>Create an Identity</a></p>"
    end.to_response
  end
end