No commit activity in last 3 years
No release in over 3 years
Fork of clearance, not-purely-restful, but with Facebook goodness
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Clearance

Simple, complete Ruby web app authentication.

We have clearance, Clarence.

Gem installation (Rails 2.1+)

In config/environments/test.rb:

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

In config/environment.rb:

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

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.haml app/views/passwords/edit.html.haml app/views/passwords/new.html.haml app/views/sessions/new.html.haml app/views/user_mailer/change_password.html.haml app/views/user_mailer/confirmation.html.haml app/views/users/_form.html.haml app/views/users/edit.html.haml app/views/users/new.html.haml 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

Add the corresponding Clearance module for any file(s) you don’t want to override. They are namespaced exactly like the directory structure of a Rails app:

app/models/user.rb already exists. include Clearance::App::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::Test::TestHelper end

Controllers

In app/controllers/application_controller.rb:

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

In app/controllers/sessions_controller.rb:

class SessionsController < ApplicationController include Clearance::App::Controllers::SessionsController include Clearance::App::Controllers::FacebookSessionsController facebook_to_user_field_mappings \ :first_name => :first_name, :last_name => :last_name end

Migration

Your users table needs a few columns.

create_table(:users) do |t| t.string :facebook_id t.string :first_name t.string :last_name 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 t.string :confirmation_code t.string :reset_password_code end add_index :users, :email add_index :users, :facebook_id add_index :users, :remember_token

Routes

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’ If you want facebook integration map.resource :session, :member => { :facebook_new => :get, :facebook_create => :get }

Environments

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

HOST = “localhost”

In config/environment.rb:

DO_NOT_REPLY = “donotreply@example.com” PROJECT_NAME = “my_app_name”

Dependencies

In order to use the Facebook sign-in features, you need to install the Facebooker plugin.

./script/plugin install git://github.com/mmangino/facebooker.git

TODO: talk about disabliing Facebook features by removing includes

Authors

  • thoughtbot, inc.
  • Dan Croak
  • Jason Morrison
  • Mike Burns
  • Josh Nichols
  • Mike Breen
  • Hashrocket, Inc.
  • Les Hill
  • Jon “Lark” Larkowski
  • Wes Gibbs