Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

139 lines (98 sloc) 3.673 kb

Clearance

Simple, complete Ruby web app authentication.

We have clearance, Clarence.

Gem installation (Rails 2.1+)

Specify the gem dependency in your config/environment.rb file:

Rails::Initializer.run do |config|

  1. config.gem ‘thoughtbot-shoulda’, :lib => ‘shoulda’, :source => “http://gems.github.com”
    config.gem ‘thoughtbot-factory_girl’, :lib => ‘factory_girl’, :source => “http://gems.github.com”
    config.gem “thoughtbot-clearance”, :lib => ‘clearance’, :source => ‘http://gems.github.com/’
    end

Then:

rake gems:install rake gems:unpack

Generator

In a greenfield application, just run the generator:

script/generate clearance

This will create:

app/controllers/confirmations_controller.rb app/controllers/passwords_controller.rb app/controllers/sessions_controller.rb app/controllers/users_controller.rb app/models/user.rb app/models/user_mailer.rb app/views/confirmations/new.html.erb app/views/passwords/edit.html.erb app/views/passwords/new.html.erb app/views/sessions/new.html.erb app/views/user_mailer/change_password.html.erb app/views/user_mailer/confirmation.html.erb app/views/users/_form.html.erb app/views/users/edit.html.erb app/views/users/new.html.erb test/functional/confirmations_controller_test.rb test/functional/passwords_controller_test.rb test/functional/sessions_controller_test.rb test/functional/users_controller_test.rb test/unit/user_mailer_test.rb test/unit/user_test.rb

If you already have some of these files created, the generator will:

  1. NOT overwrite your files
  2. print out instructions to include Clearance modules in those files manually

For example:

app/models/user.rb already exists. Add this line to it: include Clearance::Models::User

Tests

The tests use Shoulda >= 2.0.4 and Factory Girl. You should create a User Factory:

Factory.sequence :email do |n| “user#{n}@example.com” end Factory.define :user do |user| user.email { Factory.next :email } user.password “password” user.password_confirmation “password” end

In test/test_helper.rb:

class Test::Unit::TestCase self.use_transactional_fixtures = true self.use_instantiated_fixtures = false include Clearance::TestHelper end

Controllers

In app/controllers/application_controller.rb:

class ApplicationController < ActionController::Base helper :all protect_from_forgery include Clearance::ApplicationController end

Migration

Your users table needs a few columns.

create_table(:users) do |t| t.string :email t.string :crypted_password, :limit => 40 t.string :salt, :limit => 40 t.string :remember_token t.datetime :remember_token_expires_at t.boolean :confirmed, :default => false, :null => false end add_index :users, [:email, :crypted_password]

Routes

ActionController::Routing::Routes.draw do |map| map.resources :users map.resource :session map.resources :users, :has_one => :password map.resources :users, :has_one => :confirmation map.resources :passwords map.root :controller => ‘sessions’, :action => ‘new’ end

Environments

In config/environments/test.rb and config/environments/development.rb:

HOST = “localhost”

Authors

  • thoughtbot, inc.
  • Dan Croak
  • Jason Morrison
  • Mike Burns
  • Josh Nichols
  • Mike Breen
Jump to Line
Something went wrong with that request. Please try again.