devise 1.1.pre4 → 1.1.rc0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of devise might be problematic. Click here for more details.

Files changed (122) hide show
  1. data/CHANGELOG.rdoc +31 -2
  2. data/Gemfile +15 -6
  3. data/README.rdoc +12 -16
  4. data/Rakefile +2 -2
  5. data/TODO +2 -1
  6. data/app/controllers/devise/confirmations_controller.rb +1 -1
  7. data/app/controllers/devise/passwords_controller.rb +2 -3
  8. data/app/controllers/devise/registrations_controller.rb +5 -5
  9. data/app/controllers/devise/sessions_controller.rb +5 -27
  10. data/app/controllers/devise/unlocks_controller.rb +9 -1
  11. data/app/models/devise/mailer.rb +17 -11
  12. data/app/views/devise/confirmations/new.html.erb +1 -1
  13. data/app/views/devise/passwords/edit.html.erb +1 -1
  14. data/app/views/devise/passwords/new.html.erb +1 -1
  15. data/app/views/devise/registrations/edit.html.erb +2 -2
  16. data/app/views/devise/registrations/new.html.erb +2 -2
  17. data/app/views/devise/sessions/new.html.erb +2 -2
  18. data/app/views/devise/shared/_links.erb +5 -5
  19. data/app/views/devise/unlocks/new.html.erb +1 -1
  20. data/config/locales/en.yml +4 -9
  21. data/lib/devise.rb +83 -42
  22. data/lib/devise/controllers/helpers.rb +6 -18
  23. data/lib/devise/controllers/internal_helpers.rb +11 -12
  24. data/lib/devise/controllers/scoped_views.rb +2 -2
  25. data/lib/devise/controllers/url_helpers.rb +1 -1
  26. data/lib/devise/failure_app.rb +56 -16
  27. data/lib/devise/hooks/activatable.rb +18 -6
  28. data/lib/devise/hooks/rememberable.rb +36 -27
  29. data/lib/devise/hooks/timeoutable.rb +1 -1
  30. data/lib/devise/hooks/trackable.rb +4 -2
  31. data/lib/devise/mapping.rb +19 -14
  32. data/lib/devise/models.rb +12 -3
  33. data/lib/devise/models/authenticatable.rb +19 -95
  34. data/lib/devise/models/confirmable.rb +14 -20
  35. data/lib/devise/models/database_authenticatable.rb +99 -0
  36. data/lib/devise/models/lockable.rb +53 -39
  37. data/lib/devise/models/recoverable.rb +3 -3
  38. data/lib/devise/models/rememberable.rb +5 -10
  39. data/lib/devise/models/token_authenticatable.rb +18 -25
  40. data/lib/devise/models/validatable.rb +14 -9
  41. data/lib/devise/modules.rb +7 -8
  42. data/lib/devise/orm/active_record.rb +1 -1
  43. data/lib/devise/orm/data_mapper.rb +20 -7
  44. data/lib/devise/orm/mongoid.rb +40 -0
  45. data/lib/devise/rails.rb +26 -3
  46. data/lib/devise/rails/routes.rb +18 -16
  47. data/lib/devise/rails/warden_compat.rb +2 -2
  48. data/lib/devise/schema.rb +45 -18
  49. data/lib/devise/strategies/authenticatable.rb +92 -21
  50. data/lib/devise/strategies/base.rb +6 -3
  51. data/lib/devise/strategies/database_authenticatable.rb +20 -0
  52. data/lib/devise/strategies/rememberable.rb +10 -6
  53. data/lib/devise/strategies/token_authenticatable.rb +28 -19
  54. data/lib/devise/test_helpers.rb +5 -1
  55. data/lib/devise/version.rb +1 -1
  56. data/lib/generators/devise/devise_generator.rb +15 -5
  57. data/lib/generators/devise/templates/migration.rb +2 -2
  58. data/lib/generators/devise_install/templates/devise.rb +37 -16
  59. data/lib/generators/devise_views/devise_views_generator.rb +51 -4
  60. data/test/controllers/helpers_test.rb +16 -8
  61. data/test/controllers/internal_helpers_test.rb +6 -1
  62. data/test/controllers/url_helpers_test.rb +10 -10
  63. data/test/devise_test.rb +13 -17
  64. data/test/encryptors_test.rb +2 -0
  65. data/test/failure_app_test.rb +72 -23
  66. data/test/integration/confirmable_test.rb +4 -4
  67. data/test/integration/{authenticatable_test.rb → database_authenticatable_test.rb} +35 -17
  68. data/test/integration/http_authenticatable_test.rb +3 -3
  69. data/test/integration/lockable_test.rb +28 -8
  70. data/test/integration/recoverable_test.rb +3 -3
  71. data/test/integration/registerable_test.rb +6 -4
  72. data/test/integration/rememberable_test.rb +11 -4
  73. data/test/integration/timeoutable_test.rb +4 -4
  74. data/test/integration/token_authenticatable_test.rb +46 -10
  75. data/test/integration/trackable_test.rb +2 -2
  76. data/test/mailers/confirmation_instructions_test.rb +5 -5
  77. data/test/mailers/reset_password_instructions_test.rb +5 -5
  78. data/test/mailers/unlock_instructions_test.rb +5 -5
  79. data/test/mapping_test.rb +15 -14
  80. data/test/models/confirmable_test.rb +9 -32
  81. data/test/models/{authenticatable_test.rb → database_authenticatable_test.rb} +2 -34
  82. data/test/models/lockable_test.rb +48 -66
  83. data/test/models/recoverable_test.rb +8 -8
  84. data/test/models/rememberable_test.rb +6 -28
  85. data/test/models/timeoutable_test.rb +1 -1
  86. data/test/models/token_authenticatable_test.rb +1 -8
  87. data/test/models/trackable_test.rb +1 -1
  88. data/test/models/validatable_test.rb +2 -2
  89. data/test/models_test.rb +16 -2
  90. data/test/orm/active_record.rb +1 -22
  91. data/test/orm/data_mapper.rb +1 -0
  92. data/test/orm/mongoid.rb +10 -0
  93. data/test/rails_app/app/active_record/admin.rb +1 -5
  94. data/test/rails_app/app/controllers/application_controller.rb +2 -0
  95. data/test/rails_app/app/controllers/sessions_controller.rb +1 -1
  96. data/test/rails_app/app/data_mapper/admin.rb +13 -0
  97. data/test/rails_app/app/data_mapper/user.rb +24 -0
  98. data/test/rails_app/app/mongoid/admin.rb +15 -0
  99. data/test/rails_app/app/mongoid/user.rb +21 -0
  100. data/test/rails_app/config/application.rb +10 -5
  101. data/test/rails_app/config/boot.rb +5 -1
  102. data/test/rails_app/config/initializers/devise.rb +1 -1
  103. data/test/rails_app/config/routes.rb +4 -1
  104. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +27 -0
  105. data/test/rails_app/db/schema.rb +86 -0
  106. data/test/routes_test.rb +3 -3
  107. data/test/support/assertions.rb +2 -0
  108. data/test/support/helpers.rb +2 -0
  109. data/test/support/integration.rb +4 -7
  110. data/test/support/webrat/integrations/rails.rb +2 -1
  111. data/test/test_helper.rb +5 -2
  112. data/test/test_helpers_test.rb +4 -4
  113. metadata +36 -21
  114. data/lib/devise/models/http_authenticatable.rb +0 -19
  115. data/lib/devise/orm/mongo_mapper.rb +0 -49
  116. data/lib/devise/strategies/http_authenticatable.rb +0 -47
  117. data/test/models/http_authenticatable_test.rb +0 -19
  118. data/test/orm/mongo_mapper.rb +0 -12
  119. data/test/rails_app/app/mongo_mapper/admin.rb +0 -10
  120. data/test/rails_app/app/mongo_mapper/user.rb +0 -11
  121. data/test/rails_app/config/initializers/cookie_verification_secret.rb +0 -7
  122. data/test/rails_app/config/initializers/session_store.rb +0 -15
@@ -1,4 +1,4 @@
1
- require 'test/test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class TestHelpersTest < ActionController::TestCase
4
4
  tests UsersController
@@ -6,14 +6,14 @@ class TestHelpersTest < ActionController::TestCase
6
6
 
7
7
  test "redirects if attempting to access a page unauthenticated" do
8
8
  get :index
9
- assert_redirected_to "/users/sign_in?unauthenticated=true"
9
+ assert_redirected_to new_user_session_path
10
10
  end
11
11
 
12
12
  test "redirects if attempting to access a page with a unconfirmed account" do
13
13
  swap Devise, :confirm_within => 0 do
14
14
  sign_in create_user
15
15
  get :index
16
- assert_redirected_to "/users/sign_in?unconfirmed=true"
16
+ assert_redirected_to new_user_session_path
17
17
  end
18
18
  end
19
19
 
@@ -35,7 +35,7 @@ class TestHelpersTest < ActionController::TestCase
35
35
 
36
36
  sign_out user
37
37
  get :index
38
- assert_redirected_to "/users/sign_in?unauthenticated=true"
38
+ assert_redirected_to new_user_session_path
39
39
  end
40
40
 
41
41
  test "allows to sign in with different users" do
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.pre4
4
+ prerelease: true
5
+ segments:
6
+ - 1
7
+ - 1
8
+ - rc0
9
+ version: 1.1.rc0
5
10
  platform: ruby
6
11
  authors:
7
12
  - "Jos\xC3\xA9 Valim"
@@ -10,19 +15,23 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2010-03-03 00:00:00 +01:00
18
+ date: 2010-04-03 00:00:00 +02:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
22
  name: warden
18
- type: :runtime
19
- version_requirement:
20
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
21
25
  requirements:
22
26
  - - ~>
23
27
  - !ruby/object:Gem::Version
24
- version: 0.9.4
25
- version:
28
+ segments:
29
+ - 0
30
+ - 10
31
+ - 3
32
+ version: 0.10.3
33
+ type: :runtime
34
+ version_requirements: *id001
26
35
  description: Flexible authentication solution for Rails with Warden
27
36
  email: contact@plataformatec.com.br
28
37
  executables: []
@@ -81,7 +90,7 @@ files:
81
90
  - lib/devise/models/activatable.rb
82
91
  - lib/devise/models/authenticatable.rb
83
92
  - lib/devise/models/confirmable.rb
84
- - lib/devise/models/http_authenticatable.rb
93
+ - lib/devise/models/database_authenticatable.rb
85
94
  - lib/devise/models/lockable.rb
86
95
  - lib/devise/models/recoverable.rb
87
96
  - lib/devise/models/registerable.rb
@@ -93,14 +102,14 @@ files:
93
102
  - lib/devise/modules.rb
94
103
  - lib/devise/orm/active_record.rb
95
104
  - lib/devise/orm/data_mapper.rb
96
- - lib/devise/orm/mongo_mapper.rb
105
+ - lib/devise/orm/mongoid.rb
97
106
  - lib/devise/rails.rb
98
107
  - lib/devise/rails/routes.rb
99
108
  - lib/devise/rails/warden_compat.rb
100
109
  - lib/devise/schema.rb
101
110
  - lib/devise/strategies/authenticatable.rb
102
111
  - lib/devise/strategies/base.rb
103
- - lib/devise/strategies/http_authenticatable.rb
112
+ - lib/devise/strategies/database_authenticatable.rb
104
113
  - lib/devise/strategies/rememberable.rb
105
114
  - lib/devise/strategies/token_authenticatable.rb
106
115
  - lib/devise/test_helpers.rb
@@ -124,18 +133,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
133
  requirements:
125
134
  - - ">="
126
135
  - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
127
138
  version: "0"
128
- version:
129
139
  required_rubygems_version: !ruby/object:Gem::Requirement
130
140
  requirements:
131
141
  - - ">"
132
142
  - !ruby/object:Gem::Version
143
+ segments:
144
+ - 1
145
+ - 3
146
+ - 1
133
147
  version: 1.3.1
134
- version:
135
148
  requirements: []
136
149
 
137
150
  rubyforge_project:
138
- rubygems_version: 1.3.5
151
+ rubygems_version: 1.3.6
139
152
  signing_key:
140
153
  specification_version: 3
141
154
  summary: Flexible authentication solution for Rails with Warden
@@ -146,8 +159,8 @@ test_files:
146
159
  - test/devise_test.rb
147
160
  - test/encryptors_test.rb
148
161
  - test/failure_app_test.rb
149
- - test/integration/authenticatable_test.rb
150
162
  - test/integration/confirmable_test.rb
163
+ - test/integration/database_authenticatable_test.rb
151
164
  - test/integration/http_authenticatable_test.rb
152
165
  - test/integration/lockable_test.rb
153
166
  - test/integration/recoverable_test.rb
@@ -160,9 +173,8 @@ test_files:
160
173
  - test/mailers/reset_password_instructions_test.rb
161
174
  - test/mailers/unlock_instructions_test.rb
162
175
  - test/mapping_test.rb
163
- - test/models/authenticatable_test.rb
164
176
  - test/models/confirmable_test.rb
165
- - test/models/http_authenticatable_test.rb
177
+ - test/models/database_authenticatable_test.rb
166
178
  - test/models/lockable_test.rb
167
179
  - test/models/recoverable_test.rb
168
180
  - test/models/rememberable_test.rb
@@ -172,7 +184,8 @@ test_files:
172
184
  - test/models/validatable_test.rb
173
185
  - test/models_test.rb
174
186
  - test/orm/active_record.rb
175
- - test/orm/mongo_mapper.rb
187
+ - test/orm/data_mapper.rb
188
+ - test/orm/mongoid.rb
176
189
  - test/rails_app/app/active_record/admin.rb
177
190
  - test/rails_app/app/active_record/user.rb
178
191
  - test/rails_app/app/controllers/admins_controller.rb
@@ -180,9 +193,11 @@ test_files:
180
193
  - test/rails_app/app/controllers/home_controller.rb
181
194
  - test/rails_app/app/controllers/sessions_controller.rb
182
195
  - test/rails_app/app/controllers/users_controller.rb
196
+ - test/rails_app/app/data_mapper/admin.rb
197
+ - test/rails_app/app/data_mapper/user.rb
183
198
  - test/rails_app/app/helpers/application_helper.rb
184
- - test/rails_app/app/mongo_mapper/admin.rb
185
- - test/rails_app/app/mongo_mapper/user.rb
199
+ - test/rails_app/app/mongoid/admin.rb
200
+ - test/rails_app/app/mongoid/user.rb
186
201
  - test/rails_app/config/application.rb
187
202
  - test/rails_app/config/boot.rb
188
203
  - test/rails_app/config/environment.rb
@@ -190,11 +205,11 @@ test_files:
190
205
  - test/rails_app/config/environments/production.rb
191
206
  - test/rails_app/config/environments/test.rb
192
207
  - test/rails_app/config/initializers/backtrace_silencers.rb
193
- - test/rails_app/config/initializers/cookie_verification_secret.rb
194
208
  - test/rails_app/config/initializers/devise.rb
195
209
  - test/rails_app/config/initializers/inflections.rb
196
- - test/rails_app/config/initializers/session_store.rb
197
210
  - test/rails_app/config/routes.rb
211
+ - test/rails_app/db/migrate/20100401102949_create_tables.rb
212
+ - test/rails_app/db/schema.rb
198
213
  - test/routes_test.rb
199
214
  - test/support/assertions.rb
200
215
  - test/support/helpers.rb
@@ -1,19 +0,0 @@
1
- require 'devise/strategies/http_authenticatable'
2
-
3
- module Devise
4
- module Models
5
- # Adds HttpAuthenticatable behavior to your model. It expects that your
6
- # model class responds to authenticate and authentication_keys methods
7
- # (which for example are defined in authenticatable).
8
- module HttpAuthenticatable
9
- extend ActiveSupport::Concern
10
-
11
- module ClassMethods
12
- # Authenticate an user using http.
13
- def authenticate_with_http(username, password)
14
- authenticate(authentication_keys.first => username, :password => password)
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,49 +0,0 @@
1
- module Devise
2
- module Orm
3
- module MongoMapper
4
- module Hook
5
- def devise_modules_hook!
6
- extend Schema
7
- include Compatibility
8
- yield
9
- return unless Devise.apply_schema
10
- devise_modules.each { |m| send(m) if respond_to?(m, true) }
11
- end
12
- end
13
-
14
- module Schema
15
- include Devise::Schema
16
-
17
- # Tell how to apply schema methods. This automatically converts DateTime
18
- # to Time, since MongoMapper does not recognize the former.
19
- def apply_schema(name, type, options={})
20
- type = Time if type == DateTime
21
- key name, type, options
22
- end
23
- end
24
-
25
- module Compatibility
26
- extend ActiveSupport::Concern
27
-
28
- module ClassMethods
29
- def find(*args)
30
- case args.first
31
- when :first, :all
32
- send(args.shift, *args)
33
- else
34
- super
35
- end
36
- end
37
- end
38
- end
39
-
40
- end
41
- end
42
- end
43
-
44
- [MongoMapper::Document, MongoMapper::EmbeddedDocument].each do |mod|
45
- mod::ClassMethods.class_eval do
46
- include Devise::Models
47
- include Devise::Orm::MongoMapper::Hook
48
- end
49
- end
@@ -1,47 +0,0 @@
1
- require 'devise/strategies/base'
2
-
3
- module Devise
4
- module Strategies
5
- # Sign in an user using HTTP authentication.
6
- class HttpAuthenticatable < Base
7
- def valid?
8
- request.authorization && mapping.to.respond_to?(:authenticate_with_http)
9
- end
10
-
11
- def authenticate!
12
- username, password = username_and_password
13
-
14
- if resource = mapping.to.authenticate_with_http(username, password)
15
- success!(resource)
16
- else
17
- custom!([401, custom_headers, [response_body]])
18
- end
19
- end
20
-
21
- private
22
-
23
- def username_and_password
24
- decode_credentials(request).split(/:/, 2)
25
- end
26
-
27
- def decode_credentials(request)
28
- ActiveSupport::Base64.decode64(request.authorization.split(' ', 2).last || '')
29
- end
30
-
31
- def response_body
32
- body = "HTTP Basic: Access denied."
33
- method = :"to_#{request.format.to_sym}"
34
- {}.respond_to?(method) ? { :error => body }.send(method) : body
35
- end
36
-
37
- def custom_headers
38
- {
39
- "Content-Type" => request.format.to_s,
40
- "WWW-Authenticate" => %(Basic realm="#{Devise.http_authentication_realm.gsub(/"/, "")}")
41
- }
42
- end
43
- end
44
- end
45
- end
46
-
47
- Warden::Strategies.add(:http_authenticatable, Devise::Strategies::HttpAuthenticatable)
@@ -1,19 +0,0 @@
1
- require 'test/test_helper'
2
-
3
- class HttpAuthenticatableTest < ActiveSupport::TestCase
4
- test 'should authenticate a valid user with email and password and return it' do
5
- user = create_user
6
- user.confirm!
7
-
8
- authenticated_user = User.authenticate_with_http(user.email, user.password)
9
- assert_equal authenticated_user, user
10
- end
11
-
12
- test 'should return nil when authenticating an invalid user by email' do
13
- user = create_user
14
- user.confirm!
15
-
16
- authenticated_user = User.authenticate_with_http('another.email@email.com', user.password)
17
- assert_nil authenticated_user
18
- end
19
- end
@@ -1,12 +0,0 @@
1
- MongoMapper.database = "devise-test-suite"
2
- MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27017)
3
-
4
- require File.expand_path('../../rails_app/config/environment', __FILE__)
5
- require 'rails/test_help'
6
-
7
- class ActiveSupport::TestCase
8
- setup do
9
- User.delete_all
10
- Admin.delete_all
11
- end
12
- end
@@ -1,10 +0,0 @@
1
- class Admin
2
- include MongoMapper::Document
3
- include MongoMapper::Plugins::Callbacks
4
-
5
- devise :authenticatable, :timeoutable, :registerable
6
-
7
- def self.find_for_authentication(conditions)
8
- last(:conditions => conditions, :order => "email")
9
- end
10
- end
@@ -1,11 +0,0 @@
1
- class User
2
- include MongoMapper::Document
3
-
4
- key :created_at, DateTime
5
-
6
- devise :authenticatable, :http_authenticatable, :confirmable, :lockable, :recoverable,
7
- :registerable, :rememberable, :timeoutable, :token_authenticatable,
8
- :trackable, :validatable
9
-
10
- # attr_accessible :username, :email, :password, :password_confirmation
11
- end
@@ -1,7 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Your secret key for verifying the integrity of signed cookies.
4
- # If you change this key, all old signed cookies will become invalid!
5
- # Make sure the secret is at least 30 characters and all random,
6
- # no regular words or you'll be exposed to dictionary attacks.
7
- ActionController::Base.cookie_verifier_secret = 'ea942c41850d502f2c8283e26bdc57829f471bb18224ddff0a192c4f32cdf6cb5aa0d82b3a7a7adbeb640c4b06f3aa1cd5f098162d8240f669b39d6b49680571'
@@ -1,15 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Your secret key for verifying cookie session data integrity.
4
- # If you change this key, all old sessions will become invalid!
5
- # Make sure the secret is at least 30 characters and all random,
6
- # no regular words or you'll be exposed to dictionary attacks.
7
- ActionController::Base.session = {
8
- :key => '_rails_app_session',
9
- :secret => '0c31f123b2bd4424ac366a7976aaa0696f0c82337c4073a5816a3abc6553293ad14f70cf23acb391954a8ce8cf08aaca3fab21e7642aa52ea212aefa19b7439d'
10
- }
11
-
12
- # Use the database for sessions instead of the cookie-based default,
13
- # which shouldn't be used to store highly confidential information
14
- # (create the session table with "rake db:sessions:create")
15
- # ActionController::Base.session_store = :active_record_store