class Devise::Strategies::BrowseridAuthenticatable

Public Class Methods

browserid_url() click to toggle source
# File lib/devise_browserid_authenticatable/strategy.rb, line 35
def self.browserid_url
  Devise.browserid_url
end

Public Instance Methods

authenticate!() click to toggle source
# File lib/devise_browserid_authenticatable/strategy.rb, line 22
def authenticate!
  u = mapping.to.find_by_email(@asserted['email'])

  unless u
    password = Devise.friendly_token
    u = mapping.to.new(:email => @asserted['email'], :password => password, :password_confirmation => password)
    u.skip_confirmation! if u.respond_to?(:skip_confirmation!)
    u.save!
  end

  success!(u)
end
valid?() click to toggle source
# File lib/devise_browserid_authenticatable/strategy.rb, line 5
def valid?
  unless params[:assertion]
    return false
  end

  http = Net::HTTP.new(Devise::Strategies::BrowseridAuthenticatable.browserid_url, 443)
  http.use_ssl = true

  verification_request = Net::HTTP::Post.new('/verify')
  verification_request.set_form_data({:assertion => params[:assertion], :audience => request.host_with_port})

  response = http.request(verification_request)
  @asserted = JSON.parse(response.body)

  (@asserted['status'] == 'okay') and (@asserted['audience'] == request.host_with_port)
end