== About

This is a port of the standard LoginGenerator to use OpenID for
authentication.  It is distributed with the Ruby OpenID library.

Read more at:
* http://openidenabled.com
* http://openidenabled.com/openid/libraries/ruby
* http://openid.net

== Installation

If you are reading this, then you have installed the openid_login
system, but there are still a few things you have to do
manually. First open your app/controllers/application.rb and add

  require_dependency "openid_login_system"

to the top of the file and include the login system with

  include OpenidLoginSystem 

The beginning of your ApplicationController.
It should look something like this : 

  require_dependency "openid_login_system"

  class ApplicationController < ActionController::Base
    include OpenidLoginSystem
    model :user

After you have done the modifications the the AbstractController you can import
the user model into the database. This model is meant as an example and you
should extend it. 

The model :user is required when you are hitting problems to the degree of
"Session could not be restored becuase not all items in it are known"

== Requirements

You need a database table corresponding to the User model. 

  mysql syntax:
  CREATE TABLE users (
    id int(11) NOT NULL auto_increment,
    openid_url varchar(256) default NULL,
    PRIMARY KEY  (id)
  );
 
  postgres :
  CREATE TABLE "users" (
   "id" SERIAL NOT NULL UNIQUE,
   "openid_url" VARCHAR(256),
   PRIMARY KEY("id")
  ) WITH OIDS;

  sqlite:
  CREATE TABLE 'users' (
    'id' INTEGER PRIMARY KEY NOT NULL,
    'openid_url' VARCHAR(256) DEFAULT NULL
  );

Of course your user model can have any amount of extra fields. This is just a
starting point

== How to use it 

Now you can go around and happily add "before_filter :login_required" to the
controllers which you would like to protect. 

After integrating the login system with your rails application
navigate to your new controller's login method. There you may login
which will create a new User object if you've never logged in
before. After you are done you should have a look at your DB, and
you'll see the record for your User with the openid_url you entered.


== Tips & Tricks

How do I...

  ... access the user who is currently logged in

  A: You can get the user id from the session using session[:user_id]
     Example: 
	
	session[:user_id] 

       To get the User object:

	user = User.find(session[:user_id])

      	The OpenidController also has a find_user method
     	which will return the User object of the logged in user, or nil
	if no user is logged in.
	

  ... restrict access to only a few methods? 
  
  A: Use before_filters build in scoping. 
     Example: 
       before_filter :login_required, :only => [:myaccount, :changepassword]
       before_filter :login_required, :except => [:index]
     
  ... check if a user is logged-in in my views?
  
  A: session[:user_id] will tell you. Here is an example helper which you can use to make this more pretty:
     Example: 
       def user?
         !session[:user_id].nil?
       end





