GitHub Sale: sign up for any paid plan this week and pay nothing until January 1, 2009!  [ hide ]

public
Rubygem
Description: An OpenID Consumer plugin for Merb
Clone URL: git://github.com/danwrong/merb_openid.git
danwrong (author)
Wed Jun 25 08:20:16 -0700 2008
commit  9c17da9b7dfcf2f656221c4cea1c31267a35a1eb
tree    3d55c49440fa0342b218f7f91f07edc5091b41a6
parent  aee51b8097718575e2c310a50e7237fbfc948188
name age message
file LICENSE Sun Jun 22 16:36:42 -0700 2008 initial [danwrong]
file README Wed Jun 25 08:50:42 -0700 2008 you can install from rubyforge now [danwrong]
file Rakefile Wed Jun 25 08:20:16 -0700 2008 added a task for publishing to rubyforge [danwrong]
directory lib/ Wed Dec 03 14:44:53 -0800 2008 use Merb::Parse.query instead of Merb::Request.... [rlivsey]
file merb_openid.gemspec Sun Sep 28 00:32:21 -0700 2008 upped version no [danwrong]
directory spec/ Mon Jun 23 09:42:07 -0700 2008 added some very simple specs [danwrong]
README
merb_openid
===========

A plugin for Merb that wraps the ruby-openid gem (2.x) and provides an easy interface for consuming OpenIDs
in a very similar way to the open_id_authentication plugin for Rails.

Installation
============

Easy:

   gem install danwrong-merb_openid --source http://gems.github.com
   
Then in your application's init.rb:

   dependency 'merb_openid'
   
The plugin uses the pretty limited memory store by default but you can add a new store using Merb::Config:

   Merb::Config[:merb_openid][:store] = OpenID::Store::Memory.new
   
You'll probably want to use a database store on production apps.  I'll start adding adapters based on the
various ORMs soon.

Usage
=====

In your routes you need to make sure that the url you consume OpenIDs from can accept get requests, so:

   r.match('openid').(:controller => 'session', :action => 'openid')
   
Then in your controller:

  class Session < Merb::Controller
  
    def openid
      if openid_request? # has the user provided a url (openid_url)
        openid_authenticate do |result, identity_url|
          if result == :success
            user = User.find_by_openid_url(identity_url)
          end
        end
      end
    end
    
  end
  
SReg
====

Getting SReg data is easy too:

  class Session < Merb::Controller
  
    def openid
      if openid_request? # has the user provided a url (openid_url)
        openid_authenticate(:fields => [:fullname, :email]) do |result, identity_url, sreg|
          if result == :success
            user = User.find_by_openid_url(identity_url)
            user.name = sreg[:fullname]
          end
        end
      end
    end
    
  end
  
More to come!