thoughtbot-clearance 0.5.6 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.textile +25 -1
- data/README.textile +18 -5
- data/Rakefile +9 -10
- data/TODO.textile +6 -0
- data/app/controllers/clearance/confirmations_controller.rb +47 -0
- data/app/controllers/clearance/passwords_controller.rb +65 -0
- data/app/controllers/clearance/sessions_controller.rb +62 -0
- data/app/controllers/clearance/users_controller.rb +30 -0
- data/app/models/clearance_mailer.rb +19 -0
- data/{generators/clearance/templates/app → app}/views/clearance_mailer/change_password.html.erb +0 -0
- data/{generators/clearance/templates/app → app}/views/clearance_mailer/confirmation.html.erb +0 -0
- data/{generators/clearance/templates/app → app}/views/passwords/edit.html.erb +0 -0
- data/{generators/clearance/templates/app → app}/views/passwords/new.html.erb +0 -0
- data/{generators/clearance/templates/app → app}/views/sessions/new.html.erb +0 -0
- data/{generators/clearance/templates/app → app}/views/users/_form.html.erb +0 -0
- data/{generators/clearance/templates/app → app}/views/users/new.html.erb +0 -0
- data/config/clearance_routes.rb +19 -0
- data/generators/clearance/clearance_generator.rb +16 -76
- data/generators/clearance/templates/README +6 -23
- data/generators/clearance/templates/{test/factories/clearance.rb → factories.rb} +2 -5
- data/generators/clearance/templates/{db/migrate/create_users_with_clearance_columns.rb → migrations/create_users.rb} +1 -1
- data/generators/clearance/templates/{db/migrate/update_users_with_clearance_columns.rb → migrations/update_users.rb} +7 -7
- data/generators/clearance/templates/user.rb +3 -0
- data/generators/clearance_features/templates/features/step_definitions/clearance_steps.rb +1 -1
- data/lib/clearance.rb +15 -15
- data/lib/clearance/authentication.rb +80 -0
- data/lib/clearance/{lib/extensions → extensions}/errors.rb +0 -0
- data/lib/clearance/{lib/extensions → extensions}/rescue.rb +0 -0
- data/lib/clearance/user.rb +114 -0
- data/shoulda_macros/clearance.rb +11 -4
- metadata +34 -63
- data/generators/clearance/templates/app/controllers/application.rb +0 -5
- data/generators/clearance/templates/app/controllers/confirmations_controller.rb +0 -3
- data/generators/clearance/templates/app/controllers/passwords_controller.rb +0 -3
- data/generators/clearance/templates/app/controllers/sessions_controller.rb +0 -3
- data/generators/clearance/templates/app/controllers/users_controller.rb +0 -3
- data/generators/clearance/templates/app/models/clearance_mailer.rb +0 -5
- data/generators/clearance/templates/app/models/user.rb +0 -3
- data/generators/clearance/templates/app/views/users/edit.html.erb +0 -6
- data/generators/clearance/templates/test/functional/confirmations_controller_test.rb +0 -5
- data/generators/clearance/templates/test/functional/passwords_controller_test.rb +0 -5
- data/generators/clearance/templates/test/functional/sessions_controller_test.rb +0 -5
- data/generators/clearance/templates/test/functional/users_controller_test.rb +0 -5
- data/generators/clearance/templates/test/unit/clearance_mailer_test.rb +0 -6
- data/generators/clearance/templates/test/unit/user_test.rb +0 -5
- data/lib/clearance/app/controllers/application_controller.rb +0 -84
- data/lib/clearance/app/controllers/confirmations_controller.rb +0 -63
- data/lib/clearance/app/controllers/passwords_controller.rb +0 -79
- data/lib/clearance/app/controllers/sessions_controller.rb +0 -74
- data/lib/clearance/app/controllers/users_controller.rb +0 -45
- data/lib/clearance/app/models/clearance_mailer.rb +0 -23
- data/lib/clearance/app/models/user.rb +0 -118
- data/lib/clearance/test/functional/confirmations_controller_test.rb +0 -72
- data/lib/clearance/test/functional/passwords_controller_test.rb +0 -180
- data/lib/clearance/test/functional/sessions_controller_test.rb +0 -187
- data/lib/clearance/test/functional/users_controller_test.rb +0 -60
- data/lib/clearance/test/unit/clearance_mailer_test.rb +0 -65
- data/lib/clearance/test/unit/user_test.rb +0 -236
@@ -3,42 +3,25 @@
|
|
3
3
|
|
4
4
|
Ok, enough fancy automatic stuff. Time for some old school monkey copy-pasting.
|
5
5
|
|
6
|
-
1.
|
7
|
-
the corresponding Clearance module. They are namespaced exactly like the
|
8
|
-
directory structure of a Rails app.
|
9
|
-
|
10
|
-
Application controller example:
|
11
|
-
|
12
|
-
class ApplicationController < ActionController::Base
|
13
|
-
include Clearance::App::Controllers::ApplicationController
|
14
|
-
end
|
15
|
-
|
16
|
-
User model example:
|
6
|
+
1. If you already had a User model, include the Clearance::User module now:
|
17
7
|
|
18
8
|
class User < ActiveRecord::Base
|
19
|
-
include Clearance::
|
20
|
-
end
|
21
|
-
|
22
|
-
User test example:
|
23
|
-
|
24
|
-
class UserTest < ActiveSupport::TestCase
|
25
|
-
include Clearance::Test::Unit::UserTest
|
9
|
+
include Clearance::User
|
26
10
|
end
|
27
11
|
|
28
|
-
2.
|
12
|
+
2. Define a HOST constant in your environments files.
|
29
13
|
In config/environments/test.rb and config/environments/development.rb it can be:
|
30
14
|
|
31
15
|
HOST = "localhost"
|
32
16
|
|
33
|
-
In production.rb it must be the actual host your application is deployed to.
|
17
|
+
In production.rb it must be the actual host your application is deployed to.
|
34
18
|
The constant is used by mailers to generate URLs in emails.
|
35
19
|
|
36
|
-
In config/environment.rb:
|
20
|
+
3. In config/environment.rb:
|
37
21
|
|
38
22
|
DO_NOT_REPLY = "donotreply@example.com"
|
39
23
|
|
40
|
-
|
41
|
-
*something* in your config/routes.rb:
|
24
|
+
4. Define root_url to *something* in your config/routes.rb:
|
42
25
|
|
43
26
|
map.root :controller => 'home'
|
44
27
|
|
@@ -8,9 +8,6 @@ Factory.define :user do |user|
|
|
8
8
|
user.password_confirmation { "password" }
|
9
9
|
end
|
10
10
|
|
11
|
-
Factory.define :email_confirmed_user, :
|
12
|
-
user.
|
13
|
-
user.password { "password" }
|
14
|
-
user.password_confirmation { "password" }
|
15
|
-
user.email_confirmed { true }
|
11
|
+
Factory.define :email_confirmed_user, :parent => :user do |user|
|
12
|
+
user.email_confirmed { true }
|
16
13
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
class
|
1
|
+
class ClearanceUpdateUsers < ActiveRecord::Migration
|
2
2
|
def self.up
|
3
3
|
<%
|
4
4
|
existing_columns = ActiveRecord::Base.connection.columns(:users).collect { |each| each.name }
|
5
5
|
columns = [
|
6
|
-
[:email,
|
7
|
-
[:encrypted_password,
|
8
|
-
[:salt,
|
9
|
-
[:token,
|
10
|
-
[:token_expires_at,
|
11
|
-
[:email_confirmed,
|
6
|
+
[:email, 't.string :email'],
|
7
|
+
[:encrypted_password, 't.string :encrypted_password, :limit => 128'],
|
8
|
+
[:salt, 't.string :salt, :limit => 128'],
|
9
|
+
[:token, 't.string :token, :limit => 128'],
|
10
|
+
[:token_expires_at, 't.datetime :token_expires_at'],
|
11
|
+
[:email_confirmed, 't.boolean :email_confirmed, :default => false, :null => false']
|
12
12
|
].delete_if {|c| existing_columns.include?(c.first.to_s)}
|
13
13
|
-%>
|
14
14
|
change_table(:users) do |t|
|
data/lib/clearance.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
require 'clearance/
|
2
|
-
require 'clearance/
|
3
|
-
|
4
|
-
require 'clearance/
|
5
|
-
require 'clearance/
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
require 'clearance/extensions/errors'
|
2
|
+
require 'clearance/extensions/rescue'
|
3
|
+
|
4
|
+
require 'clearance/authentication'
|
5
|
+
require 'clearance/user'
|
6
|
+
|
7
|
+
class ActionController::Routing::RouteSet
|
8
|
+
def load_routes_with_clearance!
|
9
|
+
clearance_routes = File.join(File.dirname(__FILE__), *%w[.. config clearance_routes.rb])
|
10
|
+
add_configuration_file(clearance_routes) unless configuration_files.include? clearance_routes
|
11
|
+
load_routes_without_clearance!
|
12
|
+
end
|
13
|
+
|
14
|
+
alias_method_chain :load_routes!, :clearance
|
15
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Clearance
|
2
|
+
module Authentication
|
3
|
+
|
4
|
+
def self.included(controller)
|
5
|
+
controller.send(:include, InstanceMethods)
|
6
|
+
|
7
|
+
controller.class_eval do
|
8
|
+
helper_method :current_user
|
9
|
+
helper_method :signed_in?
|
10
|
+
|
11
|
+
hide_action :current_user, :signed_in?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module InstanceMethods
|
16
|
+
def current_user
|
17
|
+
@_current_user ||= (user_from_cookie || user_from_session)
|
18
|
+
end
|
19
|
+
|
20
|
+
def signed_in?
|
21
|
+
! current_user.nil?
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
def authenticate
|
27
|
+
deny_access unless signed_in?
|
28
|
+
end
|
29
|
+
|
30
|
+
def user_from_session
|
31
|
+
if session[:user_id]
|
32
|
+
return nil unless user = ::User.find_by_id(session[:user_id])
|
33
|
+
return user if user.email_confirmed?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def user_from_cookie
|
38
|
+
if token = cookies[:remember_token]
|
39
|
+
return nil unless user = ::User.find_by_token(token)
|
40
|
+
return user if user.remember?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def sign_user_in(user)
|
45
|
+
sign_in(user)
|
46
|
+
end
|
47
|
+
|
48
|
+
def sign_in(user)
|
49
|
+
if user
|
50
|
+
session[:user_id] = user.id
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def redirect_back_or(default)
|
55
|
+
session[:return_to] ||= params[:return_to]
|
56
|
+
if session[:return_to]
|
57
|
+
redirect_to(session[:return_to])
|
58
|
+
else
|
59
|
+
redirect_to(default)
|
60
|
+
end
|
61
|
+
session[:return_to] = nil
|
62
|
+
end
|
63
|
+
|
64
|
+
def redirect_to_root
|
65
|
+
redirect_to root_url
|
66
|
+
end
|
67
|
+
|
68
|
+
def store_location
|
69
|
+
session[:return_to] = request.request_uri if request.get?
|
70
|
+
end
|
71
|
+
|
72
|
+
def deny_access(flash_message = nil, opts = {})
|
73
|
+
store_location
|
74
|
+
flash[:failure] = flash_message if flash_message
|
75
|
+
redirect_to new_session_url
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'digest/sha1'
|
2
|
+
|
3
|
+
module Clearance
|
4
|
+
module User
|
5
|
+
|
6
|
+
def self.included(model)
|
7
|
+
model.extend ClassMethods
|
8
|
+
model.send(:include, InstanceMethods)
|
9
|
+
|
10
|
+
model.class_eval do
|
11
|
+
attr_accessible :email, :password, :password_confirmation
|
12
|
+
attr_accessor :password, :password_confirmation
|
13
|
+
|
14
|
+
validates_presence_of :email
|
15
|
+
validates_presence_of :password, :if => :password_required?
|
16
|
+
validates_confirmation_of :password, :if => :password_required?
|
17
|
+
validates_uniqueness_of :email, :case_sensitive => false
|
18
|
+
validates_format_of :email, :with => %r{.+@.+\..+}
|
19
|
+
|
20
|
+
before_save :initialize_salt, :encrypt_password, :initialize_token
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
module InstanceMethods
|
25
|
+
def authenticated?(password)
|
26
|
+
encrypted_password == encrypt(password)
|
27
|
+
end
|
28
|
+
|
29
|
+
def encrypt(string)
|
30
|
+
generate_hash("--#{salt}--#{string}--")
|
31
|
+
end
|
32
|
+
|
33
|
+
def remember?
|
34
|
+
token_expires_at && Time.now.utc < token_expires_at
|
35
|
+
end
|
36
|
+
|
37
|
+
def remember_me!
|
38
|
+
remember_me_until! 2.weeks.from_now.utc
|
39
|
+
end
|
40
|
+
|
41
|
+
def forget_me!
|
42
|
+
clear_token
|
43
|
+
save(false)
|
44
|
+
end
|
45
|
+
|
46
|
+
def confirm_email!
|
47
|
+
self.email_confirmed = true
|
48
|
+
self.token = nil
|
49
|
+
save(false)
|
50
|
+
end
|
51
|
+
|
52
|
+
def forgot_password!
|
53
|
+
generate_token
|
54
|
+
save(false)
|
55
|
+
end
|
56
|
+
|
57
|
+
def update_password(new_password, new_password_confirmation)
|
58
|
+
self.password = new_password
|
59
|
+
self.password_confirmation = new_password_confirmation
|
60
|
+
clear_token if valid?
|
61
|
+
save
|
62
|
+
end
|
63
|
+
|
64
|
+
protected
|
65
|
+
|
66
|
+
def generate_hash(string)
|
67
|
+
Digest::SHA1.hexdigest(string)
|
68
|
+
end
|
69
|
+
|
70
|
+
def initialize_salt
|
71
|
+
if new_record?
|
72
|
+
self.salt = generate_hash("--#{Time.now.utc.to_s}--#{password}--")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def encrypt_password
|
77
|
+
return if password.blank?
|
78
|
+
self.encrypted_password = encrypt(password)
|
79
|
+
end
|
80
|
+
|
81
|
+
def generate_token
|
82
|
+
self.token = encrypt("--#{Time.now.utc.to_s}--#{password}--")
|
83
|
+
self.token_expires_at = nil
|
84
|
+
end
|
85
|
+
|
86
|
+
def clear_token
|
87
|
+
self.token = nil
|
88
|
+
self.token_expires_at = nil
|
89
|
+
end
|
90
|
+
|
91
|
+
def initialize_token
|
92
|
+
generate_token if new_record?
|
93
|
+
end
|
94
|
+
|
95
|
+
def password_required?
|
96
|
+
encrypted_password.blank? || !password.blank?
|
97
|
+
end
|
98
|
+
|
99
|
+
def remember_me_until!(time)
|
100
|
+
self.token_expires_at = time
|
101
|
+
self.token = encrypt("--#{token_expires_at}--#{password}--")
|
102
|
+
save(false)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
module ClassMethods
|
107
|
+
def authenticate(email, password)
|
108
|
+
return nil unless user = find_by_email(email)
|
109
|
+
return user if user.authenticated?(password)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
data/shoulda_macros/clearance.rb
CHANGED
@@ -31,10 +31,17 @@ module Clearance
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
# Examples:
|
35
|
+
# should_deny_access_on :get, :index, :flash => /not authorized/i
|
36
|
+
# should_deny_access_on :get, :show, :id => '1'
|
37
|
+
def should_deny_access_on(http_method, action, opts = {})
|
38
|
+
flash_message = opts.delete(:flash)
|
39
|
+
context "on #{http_method} to #{action}" do
|
40
|
+
setup do
|
41
|
+
send(http_method, action, opts)
|
42
|
+
end
|
43
|
+
|
44
|
+
should_deny_access(:flash => flash_message)
|
38
45
|
end
|
39
46
|
end
|
40
47
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thoughtbot-clearance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thoughtbot, inc.
|
@@ -23,7 +23,7 @@ autorequire:
|
|
23
23
|
bindir: bin
|
24
24
|
cert_chain: []
|
25
25
|
|
26
|
-
date: 2009-04-
|
26
|
+
date: 2009-04-20 21:00:00 -07:00
|
27
27
|
default_executable:
|
28
28
|
dependencies: []
|
29
29
|
|
@@ -40,51 +40,40 @@ files:
|
|
40
40
|
- LICENSE
|
41
41
|
- Rakefile
|
42
42
|
- README.textile
|
43
|
+
- TODO.textile
|
44
|
+
- app/controllers
|
45
|
+
- app/controllers/clearance
|
46
|
+
- app/controllers/clearance/confirmations_controller.rb
|
47
|
+
- app/controllers/clearance/passwords_controller.rb
|
48
|
+
- app/controllers/clearance/sessions_controller.rb
|
49
|
+
- app/controllers/clearance/users_controller.rb
|
50
|
+
- app/models
|
51
|
+
- app/models/clearance_mailer.rb
|
52
|
+
- app/views
|
53
|
+
- app/views/clearance_mailer
|
54
|
+
- app/views/clearance_mailer/change_password.html.erb
|
55
|
+
- app/views/clearance_mailer/confirmation.html.erb
|
56
|
+
- app/views/passwords
|
57
|
+
- app/views/passwords/edit.html.erb
|
58
|
+
- app/views/passwords/new.html.erb
|
59
|
+
- app/views/sessions
|
60
|
+
- app/views/sessions/new.html.erb
|
61
|
+
- app/views/users
|
62
|
+
- app/views/users/_form.html.erb
|
63
|
+
- app/views/users/new.html.erb
|
64
|
+
- config/clearance_routes.rb
|
43
65
|
- generators/clearance
|
44
66
|
- generators/clearance/clearance_generator.rb
|
45
67
|
- generators/clearance/lib
|
46
68
|
- generators/clearance/lib/insert_commands.rb
|
47
69
|
- generators/clearance/lib/rake_commands.rb
|
48
70
|
- generators/clearance/templates
|
49
|
-
- generators/clearance/templates/
|
50
|
-
- generators/clearance/templates/
|
51
|
-
- generators/clearance/templates/
|
52
|
-
- generators/clearance/templates/
|
53
|
-
- generators/clearance/templates/app/controllers/passwords_controller.rb
|
54
|
-
- generators/clearance/templates/app/controllers/sessions_controller.rb
|
55
|
-
- generators/clearance/templates/app/controllers/users_controller.rb
|
56
|
-
- generators/clearance/templates/app/models
|
57
|
-
- generators/clearance/templates/app/models/clearance_mailer.rb
|
58
|
-
- generators/clearance/templates/app/models/user.rb
|
59
|
-
- generators/clearance/templates/app/views
|
60
|
-
- generators/clearance/templates/app/views/clearance_mailer
|
61
|
-
- generators/clearance/templates/app/views/clearance_mailer/change_password.html.erb
|
62
|
-
- generators/clearance/templates/app/views/clearance_mailer/confirmation.html.erb
|
63
|
-
- generators/clearance/templates/app/views/passwords
|
64
|
-
- generators/clearance/templates/app/views/passwords/edit.html.erb
|
65
|
-
- generators/clearance/templates/app/views/passwords/new.html.erb
|
66
|
-
- generators/clearance/templates/app/views/sessions
|
67
|
-
- generators/clearance/templates/app/views/sessions/new.html.erb
|
68
|
-
- generators/clearance/templates/app/views/users
|
69
|
-
- generators/clearance/templates/app/views/users/_form.html.erb
|
70
|
-
- generators/clearance/templates/app/views/users/edit.html.erb
|
71
|
-
- generators/clearance/templates/app/views/users/new.html.erb
|
72
|
-
- generators/clearance/templates/db
|
73
|
-
- generators/clearance/templates/db/migrate
|
74
|
-
- generators/clearance/templates/db/migrate/create_users_with_clearance_columns.rb
|
75
|
-
- generators/clearance/templates/db/migrate/update_users_with_clearance_columns.rb
|
71
|
+
- generators/clearance/templates/factories.rb
|
72
|
+
- generators/clearance/templates/migrations
|
73
|
+
- generators/clearance/templates/migrations/create_users.rb
|
74
|
+
- generators/clearance/templates/migrations/update_users.rb
|
76
75
|
- generators/clearance/templates/README
|
77
|
-
- generators/clearance/templates/
|
78
|
-
- generators/clearance/templates/test/factories
|
79
|
-
- generators/clearance/templates/test/factories/clearance.rb
|
80
|
-
- generators/clearance/templates/test/functional
|
81
|
-
- generators/clearance/templates/test/functional/confirmations_controller_test.rb
|
82
|
-
- generators/clearance/templates/test/functional/passwords_controller_test.rb
|
83
|
-
- generators/clearance/templates/test/functional/sessions_controller_test.rb
|
84
|
-
- generators/clearance/templates/test/functional/users_controller_test.rb
|
85
|
-
- generators/clearance/templates/test/unit
|
86
|
-
- generators/clearance/templates/test/unit/clearance_mailer_test.rb
|
87
|
-
- generators/clearance/templates/test/unit/user_test.rb
|
76
|
+
- generators/clearance/templates/user.rb
|
88
77
|
- generators/clearance/USAGE
|
89
78
|
- generators/clearance_features
|
90
79
|
- generators/clearance_features/clearance_features_generator.rb
|
@@ -101,29 +90,11 @@ files:
|
|
101
90
|
- generators/clearance_features/templates/features/support/paths.rb
|
102
91
|
- generators/clearance_features/USAGE
|
103
92
|
- lib/clearance
|
104
|
-
- lib/clearance/
|
105
|
-
- lib/clearance/
|
106
|
-
- lib/clearance/
|
107
|
-
- lib/clearance/
|
108
|
-
- lib/clearance/
|
109
|
-
- lib/clearance/app/controllers/sessions_controller.rb
|
110
|
-
- lib/clearance/app/controllers/users_controller.rb
|
111
|
-
- lib/clearance/app/models
|
112
|
-
- lib/clearance/app/models/clearance_mailer.rb
|
113
|
-
- lib/clearance/app/models/user.rb
|
114
|
-
- lib/clearance/lib
|
115
|
-
- lib/clearance/lib/extensions
|
116
|
-
- lib/clearance/lib/extensions/errors.rb
|
117
|
-
- lib/clearance/lib/extensions/rescue.rb
|
118
|
-
- lib/clearance/test
|
119
|
-
- lib/clearance/test/functional
|
120
|
-
- lib/clearance/test/functional/confirmations_controller_test.rb
|
121
|
-
- lib/clearance/test/functional/passwords_controller_test.rb
|
122
|
-
- lib/clearance/test/functional/sessions_controller_test.rb
|
123
|
-
- lib/clearance/test/functional/users_controller_test.rb
|
124
|
-
- lib/clearance/test/unit
|
125
|
-
- lib/clearance/test/unit/clearance_mailer_test.rb
|
126
|
-
- lib/clearance/test/unit/user_test.rb
|
93
|
+
- lib/clearance/authentication.rb
|
94
|
+
- lib/clearance/extensions
|
95
|
+
- lib/clearance/extensions/errors.rb
|
96
|
+
- lib/clearance/extensions/rescue.rb
|
97
|
+
- lib/clearance/user.rb
|
127
98
|
- lib/clearance.rb
|
128
99
|
- shoulda_macros/clearance.rb
|
129
100
|
- rails/init.rb
|