OpenidRegistrable

OpenidRegistrable is gem for Rails. It makes possible define required and optional fields for registration via OpenID and to map them to fields of your model.

Usage

class User < ActiveRecord::Base openid_registrable :required_fields => { :email => 'http://axschema.org/contact/email', }, :optional_fields => { :first_name => 'http://axschema.org/namePerson/first', :last_name => 'http://axschema.org/namePerson/last', } end

User.openid_required_fields => ['http://axschema.org/contact/email'] User.openid_optional_fields => ['http://axschema.org/namePerson/first', 'http://axschema.org/namePerson/last']

User.openid_fields_to_model_fields_mapping =>

{:email => 'http://axschema.org/contact/email' :first_name => 'http://axschema.org/namePerson/first', :last_name => 'http://axschema.org/namePerson/last' }

assign fields

@user = User.new @user.assign_openid_fields(openid_ax_data) @user.save

Usage with open_id_authentication

https://github.com/Velir/open_id_authentication

authenticate_with_open_id(@openid_identifier, :required => User.openid_required_fields, :optional => User.openid_optional_fields) do |result, identity_url, sreg_data, ax_data| if result.successful? if self.current_user = User.find_by_identity_url(identity_url) current_user.assign_openid_fields(ax_data, [:username])

   current_user.changes.empty? ? successful_login : successful_login(edit_user_path(:user => current_user.attributes))
 else
   self.current_user = User.new(:identity_url => identity_url)
   current_user.assign_openid_fields(ax_data)

   successful_login(registration_via_openid_path(:user => current_user.attributes))
 end
else
 failed_login result.message
end

end

Copyright (c) 2011 Vít Krchov, KRAXNET s.r.o., released under the MIT license