devise 1.5.1 → 2.0.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.
Files changed (132) hide show
  1. data/CHANGELOG.rdoc +111 -68
  2. data/MIT-LICENSE +1 -1
  3. data/README.rdoc +7 -4
  4. data/app/controllers/devise/confirmations_controller.rb +3 -6
  5. data/app/controllers/devise/omniauth_callbacks_controller.rb +1 -3
  6. data/app/controllers/devise/passwords_controller.rb +3 -6
  7. data/app/controllers/devise/registrations_controller.rb +40 -42
  8. data/app/controllers/devise/sessions_controller.rb +2 -3
  9. data/app/controllers/devise/unlocks_controller.rb +4 -7
  10. data/app/controllers/devise_controller.rb +169 -0
  11. data/app/views/devise/_links.erb +25 -0
  12. data/app/views/devise/confirmations/new.html.erb +1 -1
  13. data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
  14. data/app/views/devise/passwords/edit.html.erb +1 -1
  15. data/app/views/devise/passwords/new.html.erb +1 -1
  16. data/app/views/devise/registrations/new.html.erb +1 -1
  17. data/app/views/devise/sessions/new.html.erb +1 -1
  18. data/app/views/devise/shared/_links.erb +3 -25
  19. data/app/views/devise/unlocks/new.html.erb +1 -1
  20. data/config/locales/en.yml +5 -6
  21. data/lib/devise/controllers/helpers.rb +8 -2
  22. data/lib/devise/controllers/scoped_views.rb +0 -16
  23. data/lib/devise/controllers/url_helpers.rb +16 -2
  24. data/lib/devise/delegator.rb +2 -2
  25. data/lib/devise/failure_app.rb +43 -8
  26. data/lib/devise/mapping.rb +1 -4
  27. data/lib/devise/models/authenticatable.rb +22 -1
  28. data/lib/devise/models/confirmable.rb +80 -22
  29. data/lib/devise/models/database_authenticatable.rb +5 -16
  30. data/lib/devise/models/lockable.rb +1 -1
  31. data/lib/devise/models/recoverable.rb +5 -5
  32. data/lib/devise/models/rememberable.rb +5 -20
  33. data/lib/devise/models/serializable.rb +5 -2
  34. data/lib/devise/models/timeoutable.rb +9 -7
  35. data/lib/devise/models/token_authenticatable.rb +1 -4
  36. data/lib/devise/models/validatable.rb +1 -1
  37. data/lib/devise/models.rb +1 -1
  38. data/lib/devise/modules.rb +2 -2
  39. data/lib/devise/omniauth/config.rb +1 -1
  40. data/lib/devise/orm/active_record.rb +6 -0
  41. data/lib/devise/param_filter.rb +1 -1
  42. data/lib/devise/path_checker.rb +7 -2
  43. data/lib/devise/rails/routes.rb +23 -14
  44. data/lib/devise/rails/warden_compat.rb +0 -83
  45. data/lib/devise/rails.rb +61 -0
  46. data/lib/devise/schema.rb +5 -0
  47. data/lib/devise/strategies/authenticatable.rb +14 -10
  48. data/lib/devise/strategies/token_authenticatable.rb +3 -3
  49. data/lib/devise/version.rb +1 -1
  50. data/lib/devise.rb +56 -33
  51. data/lib/generators/active_record/devise_generator.rb +40 -2
  52. data/lib/generators/active_record/templates/migration.rb +1 -19
  53. data/lib/generators/active_record/templates/migration_existing.rb +1 -9
  54. data/lib/generators/devise/views_generator.rb +6 -14
  55. data/lib/generators/mongoid/devise_generator.rb +43 -0
  56. data/lib/generators/templates/devise.rb +28 -14
  57. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +1 -1
  58. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +1 -1
  59. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +1 -1
  60. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +1 -1
  61. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +1 -1
  62. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +1 -1
  63. data/test/controllers/internal_helpers_test.rb +5 -4
  64. data/test/delegator_test.rb +19 -0
  65. data/test/devise_test.rb +2 -2
  66. data/test/failure_app_test.rb +24 -20
  67. data/test/generators/active_record_generator_test.rb +3 -13
  68. data/test/generators/views_generator_test.rb +1 -1
  69. data/test/integration/authenticatable_test.rb +4 -7
  70. data/test/integration/confirmable_test.rb +55 -3
  71. data/test/integration/http_authenticatable_test.rb +20 -5
  72. data/test/integration/lockable_test.rb +26 -14
  73. data/test/integration/registerable_test.rb +33 -2
  74. data/test/integration/rememberable_test.rb +0 -50
  75. data/test/integration/timeoutable_test.rb +18 -4
  76. data/test/integration/token_authenticatable_test.rb +5 -5
  77. data/test/integration/trackable_test.rb +6 -6
  78. data/test/mapping_test.rb +2 -3
  79. data/test/models/confirmable_test.rb +101 -8
  80. data/test/models/database_authenticatable_test.rb +19 -0
  81. data/test/models/encryptable_test.rb +1 -1
  82. data/test/models/lockable_test.rb +13 -0
  83. data/test/models/recoverable_test.rb +0 -27
  84. data/test/models/rememberable_test.rb +41 -160
  85. data/test/models/serializable_test.rb +1 -1
  86. data/test/models/timeoutable_test.rb +14 -0
  87. data/test/models_test.rb +7 -7
  88. data/test/path_checker_test.rb +21 -0
  89. data/test/rails_app/app/mongoid/admin.rb +22 -1
  90. data/test/rails_app/app/mongoid/user.rb +35 -0
  91. data/test/rails_app/config/initializers/devise.rb +6 -7
  92. data/test/rails_app/config/routes.rb +3 -5
  93. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +58 -12
  94. data/test/rails_app/lib/shared_admin.rb +6 -2
  95. data/test/rails_app/log/development.log +13 -0
  96. data/test/rails_app/log/test.log +319550 -0
  97. data/test/routes_test.rb +4 -0
  98. data/test/support/assertions.rb +4 -1
  99. data/test/support/helpers.rb +0 -17
  100. data/test/support/integration.rb +3 -1
  101. data/test/test_helpers_test.rb +2 -2
  102. data/test/tmp/app/views/devise/_links.erb +25 -0
  103. data/test/tmp/app/views/devise/confirmations/new.html.erb +15 -0
  104. data/test/tmp/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  105. data/test/tmp/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  106. data/test/tmp/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  107. data/test/tmp/app/views/devise/passwords/edit.html.erb +19 -0
  108. data/test/tmp/app/views/devise/passwords/new.html.erb +15 -0
  109. data/test/tmp/app/views/devise/registrations/edit.html.erb +22 -0
  110. data/test/tmp/app/views/devise/registrations/new.html.erb +17 -0
  111. data/test/tmp/app/views/devise/sessions/new.html.erb +15 -0
  112. data/test/tmp/app/views/devise/unlocks/new.html.erb +15 -0
  113. data/test/tmp/app/views/users/_links.erb +25 -0
  114. data/test/tmp/app/views/users/confirmations/new.html.erb +15 -0
  115. data/test/tmp/app/views/users/mailer/confirmation_instructions.html.erb +5 -0
  116. data/test/tmp/app/views/users/mailer/reset_password_instructions.html.erb +8 -0
  117. data/test/tmp/app/views/users/mailer/unlock_instructions.html.erb +7 -0
  118. data/test/tmp/app/views/users/passwords/edit.html.erb +19 -0
  119. data/test/tmp/app/views/users/passwords/new.html.erb +15 -0
  120. data/test/tmp/app/views/users/registrations/edit.html.erb +22 -0
  121. data/test/tmp/app/views/users/registrations/new.html.erb +17 -0
  122. data/test/tmp/app/views/users/sessions/new.html.erb +15 -0
  123. data/test/tmp/app/views/users/unlocks/new.html.erb +15 -0
  124. metadata +83 -27
  125. data/.gitignore +0 -12
  126. data/.travis.yml +0 -13
  127. data/Gemfile +0 -35
  128. data/Rakefile +0 -34
  129. data/devise.gemspec +0 -25
  130. data/lib/devise/controllers/internal_helpers.rb +0 -154
  131. data/lib/devise/controllers/shared_helpers.rb +0 -26
  132. data/test/schema_test.rb +0 -33
@@ -1,7 +1,46 @@
1
1
  require 'test_helper'
2
2
 
3
- module SharedRememberableTest
4
- extend ActiveSupport::Testing::Declarative
3
+ class RememberableTest < ActiveSupport::TestCase
4
+ def resource_class
5
+ User
6
+ end
7
+
8
+ def create_resource
9
+ create_user
10
+ end
11
+
12
+ test 'remember_me should not generate a new token if using salt' do
13
+ user = create_user
14
+ user.expects(:valid?).never
15
+ user.remember_me!
16
+ end
17
+
18
+ test 'forget_me should not clear remember token if using salt' do
19
+ user = create_user
20
+ user.remember_me!
21
+ user.expects(:valid?).never
22
+ user.forget_me!
23
+ end
24
+
25
+ test 'serialize into cookie' do
26
+ user = create_user
27
+ user.remember_me!
28
+ assert_equal [user.to_key, user.authenticatable_salt], User.serialize_into_cookie(user)
29
+ end
30
+
31
+ test 'serialize from cookie' do
32
+ user = create_user
33
+ user.remember_me!
34
+ assert_equal user, User.serialize_from_cookie(user.to_key, user.authenticatable_salt)
35
+ end
36
+
37
+ test 'raises a RuntimeError if authenticatable_salt is nil' do
38
+ user = User.new
39
+ user.encrypted_password = nil
40
+ assert_raise RuntimeError do
41
+ user.rememberable_value
42
+ end
43
+ end
5
44
 
6
45
  test 'should respond to remember_me attribute' do
7
46
  assert resource_class.new.respond_to?(:remember_me)
@@ -127,161 +166,3 @@ module SharedRememberableTest
127
166
  end
128
167
  end
129
168
  end
130
-
131
- class RememberableTest < ActiveSupport::TestCase
132
- include SharedRememberableTest
133
-
134
- def resource_class
135
- Admin
136
- end
137
-
138
- def create_resource
139
- create_admin
140
- end
141
-
142
- test 'remember_me should generate a new token and save the record without validating' do
143
- admin = create_admin
144
- admin.expects(:valid?).never
145
- token = admin.remember_token
146
- admin.remember_me!
147
- assert_not_equal token, admin.remember_token
148
- assert_not admin.changed?
149
- end
150
-
151
- test 'forget_me should clear remember token and save the record without validating' do
152
- admin = create_admin
153
- admin.remember_me!
154
- assert_not admin.remember_token.nil?
155
- admin.expects(:valid?).never
156
- admin.forget_me!
157
- assert admin.remember_token.nil?
158
- assert_not admin.changed?
159
- end
160
-
161
- test 'serialize into cookie' do
162
- admin = create_admin
163
- admin.remember_me!
164
- assert_equal [admin.to_key, admin.remember_token], Admin.serialize_into_cookie(admin)
165
- end
166
-
167
- test 'serialize from cookie' do
168
- admin = create_admin
169
- admin.remember_me!
170
- assert_equal admin, Admin.serialize_from_cookie(admin.to_key, admin.remember_token)
171
- end
172
-
173
- test 'if remember_across_browsers is true, remember_me! should create a new token if no token exists' do
174
- swap Devise, :remember_across_browsers => true, :remember_for => 1.year do
175
- admin = create_admin
176
- assert_equal nil, admin.remember_token
177
- admin.remember_me!
178
- assert_not_equal nil, admin.remember_token
179
- end
180
- end
181
-
182
- test 'if remember_across_browsers is true, remember_me! should create a new token if a token exists but has expired' do
183
- swap Devise, :remember_across_browsers => true, :remember_for => 1.day do
184
- admin = create_admin
185
- admin.remember_me!
186
- admin.remember_created_at = 2.days.ago
187
- admin.save
188
- token = admin.remember_token
189
- admin.remember_me!
190
- assert_not_equal token, admin.remember_token
191
- end
192
- end
193
-
194
- test 'if remember_across_browsers is true, remember_me! should not create a new token if a token exists and has not expired' do
195
- swap Devise, :remember_across_browsers => true, :remember_for => 2.days do
196
- admin = create_admin
197
- admin.remember_me!
198
- admin.remember_created_at = 1.day.ago
199
- admin.save
200
- token = admin.remember_token
201
- admin.remember_me!
202
- assert_equal token, admin.remember_token
203
- end
204
- end
205
-
206
- test 'if remember_across_browsers is false, remember_me! should create a new token if no token exists' do
207
- swap Devise, :remember_across_browsers => false do
208
- admin = create_admin
209
- assert_equal nil, admin.remember_token
210
- admin.remember_me!
211
- assert_not_equal nil, admin.remember_token
212
- end
213
- end
214
-
215
- test 'if remember_across_browsers is false, remember_me! should create a new token if a token exists but has expired' do
216
- swap Devise, :remember_across_browsers => false, :remember_for => 1.day do
217
- admin = create_admin
218
- admin.remember_me!
219
- admin.remember_created_at = 2.days.ago
220
- admin.save
221
- token = admin.remember_token
222
- admin.remember_me!
223
- assert_not_equal token, admin.remember_token
224
- end
225
- end
226
-
227
- test 'if remember_across_browsers is false, remember_me! should create a new token if a token exists and has not expired' do
228
- swap Devise, :remember_across_browsers => false, :remember_for => 2.days do
229
- admin = create_admin
230
- admin.remember_me!
231
- admin.remember_created_at = 1.day.ago
232
- admin.save
233
- token = admin.remember_token
234
- admin.remember_me!
235
- assert_not_equal token, admin.remember_token
236
- end
237
- end
238
- end
239
-
240
- class WithSaltRememberableTest < ActiveSupport::TestCase
241
- include SharedRememberableTest
242
-
243
- setup do
244
- assert_not User.new.respond_to?(:remember_token)
245
- end
246
-
247
- def resource_class
248
- User
249
- end
250
-
251
- def create_resource
252
- create_user
253
- end
254
-
255
- test 'remember_me should not generate a new token if using salt' do
256
- user = create_user
257
- user.expects(:valid?).never
258
- user.remember_me!
259
- end
260
-
261
- test 'forget_me should not clear remember token if using salt' do
262
- user = create_user
263
- user.remember_me!
264
- user.expects(:valid?).never
265
- user.forget_me!
266
- end
267
-
268
- test 'serialize into cookie' do
269
- user = create_user
270
- user.remember_me!
271
- assert_equal [user.to_key, user.authenticatable_salt], User.serialize_into_cookie(user)
272
- end
273
-
274
- test 'serialize from cookie' do
275
- user = create_user
276
- user.remember_me!
277
- assert_equal user, User.serialize_from_cookie(user.to_key, user.authenticatable_salt)
278
- end
279
-
280
- test 'raises a RuntimeError if authenticatable_salt is nil' do
281
- user = User.new
282
- user.encrypted_password = nil
283
- assert_raise RuntimeError do
284
- user.rememberable_value
285
- end
286
- end
287
- end
@@ -16,7 +16,7 @@ class SerializableTest < ActiveSupport::TestCase
16
16
  end
17
17
 
18
18
  test 'should include unsafe keys on XML if a force_except is provided' do
19
- assert_no_match /email/, @user.to_xml(:force_except => :email)
19
+ assert_no_match /<email/, @user.to_xml(:force_except => :email)
20
20
  assert_match /confirmation-token/, @user.to_xml(:force_except => :email)
21
21
  end
22
22
 
@@ -14,6 +14,20 @@ class TimeoutableTest < ActiveSupport::TestCase
14
14
  assert_not new_user.timedout?(nil)
15
15
  end
16
16
 
17
+ test 'should use timeout_in method' do
18
+ user = new_user
19
+ user.instance_eval { def timeout_in; 10.minutes end }
20
+
21
+ assert user.timedout?(12.minutes.ago)
22
+ assert_not user.timedout?(8.minutes.ago)
23
+ end
24
+
25
+ test 'should not be expired when timeout_in method returns nil' do
26
+ user = new_user
27
+ user.instance_eval { def timeout_in; nil end }
28
+ assert_not user.timedout?(10.hours.ago)
29
+ end
30
+
17
31
  test 'fallback to Devise config option' do
18
32
  swap Devise, :timeout_in => 1.minute do
19
33
  user = new_user
data/test/models_test.rb CHANGED
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class Configurable < User
4
4
  devise :database_authenticatable, :encryptable, :confirmable, :rememberable, :timeoutable, :lockable,
5
- :stretches => 15, :pepper => 'abcdef', :confirm_within => 5.days,
5
+ :stretches => 15, :pepper => 'abcdef', :allow_unconfirmed_access_for => 5.days,
6
6
  :remember_for => 7.days, :timeout_in => 15.minutes, :unlock_in => 10.days
7
7
  end
8
8
 
@@ -39,7 +39,7 @@ class ActiveRecordTest < ActiveSupport::TestCase
39
39
  end
40
40
 
41
41
  test 'can cherry pick modules' do
42
- assert_include_modules Admin, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :rememberable, :encryptable
42
+ assert_include_modules Admin, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :encryptable, :confirmable
43
43
  end
44
44
 
45
45
  test 'validations options are not applied too late' do
@@ -55,12 +55,12 @@ class ActiveRecordTest < ActiveSupport::TestCase
55
55
  end
56
56
 
57
57
  test 'chosen modules are inheritable' do
58
- assert_include_modules Inheritable, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :rememberable, :encryptable
58
+ assert_include_modules Inheritable, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :encryptable, :confirmable
59
59
  end
60
60
 
61
61
  test 'order of module inclusion' do
62
- correct_module_order = [:database_authenticatable, :rememberable, :encryptable, :recoverable, :registerable, :lockable, :timeoutable]
63
- incorrect_module_order = [:database_authenticatable, :timeoutable, :registerable, :recoverable, :lockable, :encryptable, :rememberable]
62
+ correct_module_order = [:database_authenticatable, :encryptable, :recoverable, :registerable, :confirmable, :lockable, :timeoutable]
63
+ incorrect_module_order = [:database_authenticatable, :timeoutable, :registerable, :recoverable, :lockable, :encryptable, :confirmable]
64
64
 
65
65
  assert_include_modules Admin, *incorrect_module_order
66
66
 
@@ -87,8 +87,8 @@ class ActiveRecordTest < ActiveSupport::TestCase
87
87
  assert_equal 'abcdef', Configurable.pepper
88
88
  end
89
89
 
90
- test 'set a default value for confirm_within' do
91
- assert_equal 5.days, Configurable.confirm_within
90
+ test 'set a default value for allow_unconfirmed_access_for' do
91
+ assert_equal 5.days, Configurable.allow_unconfirmed_access_for
92
92
  end
93
93
 
94
94
  test 'set a default value for remember_for' do
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class PathCheckerTest < ActiveSupport::TestCase
4
+ test 'check if sign out path matches' do
5
+ path_checker = Devise::PathChecker.new({"PATH_INFO" => "/users/sign_out"}, :user)
6
+ assert path_checker.signing_out?
7
+
8
+ path_checker = Devise::PathChecker.new({"PATH_INFO" => "/users/sign_in"}, :user)
9
+ assert_not path_checker.signing_out?
10
+ end
11
+
12
+ test 'considers script name' do
13
+ path_checker = Devise::PathChecker.new({"SCRIPT_NAME" => "/users", "PATH_INFO" => "/sign_out"}, :user)
14
+ assert path_checker.signing_out?
15
+ end
16
+
17
+ test 'ignores invalid routes' do
18
+ path_checker = Devise::PathChecker.new({"PATH_INFO" => "/users/sign_in"}, :omg)
19
+ assert_not path_checker.signing_out?
20
+ end
21
+ end
@@ -5,5 +5,26 @@ class Admin
5
5
  include Shim
6
6
  include SharedAdmin
7
7
 
8
- field :remember_token, :type => String
8
+ ## Database authenticatable
9
+ field :email, :type => String, :null => true
10
+ field :encrypted_password, :type => String, :null => true
11
+
12
+ ## Recoverable
13
+ field :reset_password_token, :type => String
14
+ field :reset_password_sent_at, :type => Time
15
+
16
+ ## Rememberable
17
+ field :remember_created_at, :type => Time
18
+
19
+ ## Confirmable
20
+ field :confirmation_token, :type => String
21
+ field :confirmed_at, :type => Time
22
+ field :confirmation_sent_at, :type => Time
23
+ field :unconfirmed_email, :type => String # Only if using reconfirmable
24
+
25
+ ## Encryptable
26
+ field :password_salt, :type => String
27
+
28
+ ## Lockable
29
+ field :locked_at, :type => Time
9
30
  end
@@ -7,4 +7,39 @@ class User
7
7
 
8
8
  field :username, :type => String
9
9
  field :facebook_token, :type => String
10
+
11
+ ## Database authenticatable
12
+ field :email, :type => String, :null => false, :default => ""
13
+ field :encrypted_password, :type => String, :null => false, :default => ""
14
+
15
+ ## Recoverable
16
+ field :reset_password_token, :type => String
17
+ field :reset_password_sent_at, :type => Time
18
+
19
+ ## Rememberable
20
+ field :remember_created_at, :type => Time
21
+
22
+ ## Trackable
23
+ field :sign_in_count, :type => Integer, :default => 0
24
+ field :current_sign_in_at, :type => Time
25
+ field :last_sign_in_at, :type => Time
26
+ field :current_sign_in_ip, :type => String
27
+ field :last_sign_in_ip, :type => String
28
+
29
+ ## Encryptable
30
+ # field :password_salt, :type => String
31
+
32
+ ## Confirmable
33
+ field :confirmation_token, :type => String
34
+ field :confirmed_at, :type => Time
35
+ field :confirmation_sent_at, :type => Time
36
+ # field :unconfirmed_email, :type => String # Only if using reconfirmable
37
+
38
+ ## Lockable
39
+ field :failed_attempts, :type => Integer, :default => 0 # Only if lock strategy is :failed_attempts
40
+ field :unlock_token, :type => String # Only if unlock strategy is :email or :both
41
+ field :locked_at, :type => Time
42
+
43
+ ## Token authenticatable
44
+ field :authentication_token, :type => String
10
45
  end
@@ -12,6 +12,9 @@ Devise.setup do |config|
12
12
  # Configure the class responsible to send e-mails.
13
13
  # config.mailer = "Devise::Mailer"
14
14
 
15
+ # Disable apply schema
16
+ config.apply_schema = false
17
+
15
18
  # ==> ORM configuration
16
19
  # Load and configure the ORM. Supports :active_record (default) and
17
20
  # :mongoid (bson_ext recommended) by default. Other ORMs may be
@@ -60,16 +63,16 @@ Devise.setup do |config|
60
63
  # ==> Configuration for :database_authenticatable
61
64
  # For bcrypt, this is the cost for hashing the password and defaults to 10. If
62
65
  # using other encryptors, it sets how many times you want the password re-encrypted.
63
- config.stretches = 10
66
+ config.stretches = Rails.env.test? ? 1 : 10
64
67
 
65
68
  # ==> Configuration for :confirmable
66
69
  # The time you want to give your user to confirm his account. During this time
67
70
  # he will be able to access your application without confirming. Default is nil.
68
- # When confirm_within is zero, the user won't be able to sign in without confirming.
71
+ # When allow_unconfirmed_access_for is zero, the user won't be able to sign in without confirming.
69
72
  # You can use this to let your user access some features of your application
70
73
  # without confirming the account, but blocking it after a certain period
71
74
  # (ie 2 days).
72
- # config.confirm_within = 2.days
75
+ # config.allow_unconfirmed_access_for = 2.days
73
76
 
74
77
  # Defines which key will be used when confirming an account
75
78
  # config.confirmation_keys = [ :email ]
@@ -148,10 +151,6 @@ Devise.setup do |config|
148
151
  # Defines name of the authentication token params key
149
152
  # config.token_authentication_key = :auth_token
150
153
 
151
- # If true, authentication through token does not store user in session and needs
152
- # to be supplied on each request. Useful if you are using the token as API token.
153
- # config.stateless_token = false
154
-
155
154
  # ==> Scopes configuration
156
155
  # Turn scoped views on. Before rendering "sessions/new", it will first check for
157
156
  # "users/sessions/new". It's turned off by default because it's slower if you
@@ -12,9 +12,7 @@ Rails.application.routes.draw do
12
12
  resources :admins, :only => [:index]
13
13
 
14
14
  # Users scope
15
- devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
16
- match "/devise_for/sign_in", :to => "devise/sessions#new"
17
- end
15
+ devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
18
16
 
19
17
  as :user do
20
18
  match "/as/sign_in", :to => "devise/sessions#new"
@@ -64,14 +62,14 @@ Rails.application.routes.draw do
64
62
  devise_for :accounts, :class_name => "Admin", :path_names => { :sign_in => "get_in" }
65
63
  end
66
64
 
67
- scope ":locale" do
65
+ scope ":locale", :module => :invalid do
68
66
  devise_for :accounts, :singular => "manager", :class_name => "Admin",
69
67
  :path_names => {
70
68
  :sign_in => "login", :sign_out => "logout",
71
69
  :password => "secret", :confirmation => "verification",
72
70
  :unlock => "unblock", :sign_up => "register",
73
71
  :registration => "management", :cancel => "giveup"
74
- }, :failure_app => lambda { |env| [404, {"Content-Type" => "text/plain"}, ["Oops, not found"]] }
72
+ }, :failure_app => lambda { |env| [404, {"Content-Type" => "text/plain"}, ["Oops, not found"]] }, :module => :devise
75
73
  end
76
74
 
77
75
  namespace :sign_out_via, :module => "devise" do
@@ -4,22 +4,68 @@ class CreateTables < ActiveRecord::Migration
4
4
  t.string :username
5
5
  t.string :facebook_token
6
6
 
7
- t.database_authenticatable :null => false
8
- t.confirmable
9
- t.recoverable
10
- t.rememberable
11
- t.trackable
12
- t.lockable
13
- t.token_authenticatable
7
+ ## Database authenticatable
8
+ t.string :email, :null => false, :default => ""
9
+ t.string :encrypted_password, :null => false, :default => ""
10
+
11
+ ## Recoverable
12
+ t.string :reset_password_token
13
+ t.datetime :reset_password_sent_at
14
+
15
+ ## Rememberable
16
+ t.datetime :remember_created_at
17
+
18
+ ## Trackable
19
+ t.integer :sign_in_count, :default => 0
20
+ t.datetime :current_sign_in_at
21
+ t.datetime :last_sign_in_at
22
+ t.string :current_sign_in_ip
23
+ t.string :last_sign_in_ip
24
+
25
+ ## Encryptable
26
+ # t.string :password_salt
27
+
28
+ ## Confirmable
29
+ t.string :confirmation_token
30
+ t.datetime :confirmed_at
31
+ t.datetime :confirmation_sent_at
32
+ # t.string :unconfirmed_email # Only if using reconfirmable
33
+
34
+ ## Lockable
35
+ t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
36
+ t.string :unlock_token # Only if unlock strategy is :email or :both
37
+ t.datetime :locked_at
38
+
39
+ ## Token authenticatable
40
+ t.string :authentication_token
41
+
14
42
  t.timestamps
15
43
  end
16
44
 
17
45
  create_table :admins do |t|
18
- t.database_authenticatable :null => true
19
- t.encryptable
20
- t.rememberable :use_salt => false
21
- t.recoverable
22
- t.lockable
46
+ ## Database authenticatable
47
+ t.string :email, :null => true
48
+ t.string :encrypted_password, :null => true
49
+
50
+ ## Recoverable
51
+ t.string :reset_password_token
52
+ t.datetime :reset_password_sent_at
53
+
54
+ ## Rememberable
55
+ t.datetime :remember_created_at
56
+
57
+ ## Confirmable
58
+ t.string :confirmation_token
59
+ t.datetime :confirmed_at
60
+ t.datetime :confirmation_sent_at
61
+ t.string :unconfirmed_email # Only if using reconfirmable
62
+
63
+ ## Encryptable
64
+ t.string :password_salt
65
+
66
+ ## Lockable
67
+ t.datetime :locked_at
68
+
23
69
  t.timestamps
24
70
  end
25
71
  end
@@ -3,8 +3,12 @@ module SharedAdmin
3
3
 
4
4
  included do
5
5
  devise :database_authenticatable, :encryptable, :registerable,
6
- :timeoutable, :recoverable, :rememberable, :lockable,
7
- :unlock_strategy => :time
6
+ :timeoutable, :recoverable, :lockable, :confirmable,
7
+ :unlock_strategy => :time, :lock_strategy => :none,
8
+ :allow_unconfirmed_access_for => 2.weeks, :reconfirmable => true
9
+
10
+ validates_length_of :reset_password_token, :minimum => 3, :allow_blank => true
11
+ validates_uniqueness_of :email, :allow_blank => true, :if => :email_changed?
8
12
  end
9
13
 
10
14
  end
@@ -0,0 +1,13 @@
1
+  (0.1ms) select sqlite_version(*)
2
+  (1.3ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
3
+  (0.0ms) PRAGMA index_list("schema_migrations")
4
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
5
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" 
6
+ Migrating to CreateTables (20100401102949)
7
+  (0.4ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "username" varchar(255), "facebook_token" varchar(255), "email" varchar(255) DEFAULT '' NOT NULL, "encrypted_password" varchar(128) DEFAULT '' NOT NULL, "confirmation_token" varchar(255), "confirmed_at" datetime, "confirmation_sent_at" datetime, "reset_password_token" varchar(255), "reset_password_sent_at" datetime, "remember_created_at" datetime, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" datetime, "last_sign_in_at" datetime, "current_sign_in_ip" varchar(255), "last_sign_in_ip" varchar(255), "failed_attempts" integer DEFAULT 0, "unlock_token" varchar(255), "locked_at" datetime, "authentication_token" varchar(255), "created_at" datetime, "updated_at" datetime)
8
+  (0.1ms) CREATE TABLE "admins" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "encrypted_password" varchar(128), "password_salt" varchar(255), "remember_token" varchar(255), "remember_created_at" datetime, "reset_password_token" varchar(255), "reset_password_sent_at" datetime, "failed_attempts" integer DEFAULT 0, "unlock_token" varchar(255), "locked_at" datetime, "created_at" datetime, "updated_at" datetime) 
9
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20100401102949')
10
+  (0.1ms) select sqlite_version(*)
11
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations"
12
+  (0.0ms) PRAGMA index_list("admins")
13
+  (0.0ms) PRAGMA index_list("users")