salted_login_generator 1.1.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
  require '<%= file_name %>_controller'
3
+ # ADD to fix advance_by_days= problem
4
+ require File.dirname(__FILE__) + '/../mocks/test/time'
3
5
 
4
6
  # Raise errors beyond the default web-based presentation
5
7
  class <%= class_name %>Controller; def rescue_action(e) raise e end; end
@@ -7,22 +9,23 @@ class <%= class_name %>Controller; def rescue_action(e) raise e end; end
7
9
  class <%= class_name %>ControllerTest < Test::Unit::TestCase
8
10
 
9
11
  fixtures :<%= plural_name %>
10
-
12
+
11
13
  def setup
14
+ super
12
15
  @controller = <%= class_name %>Controller.new
13
- @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new
14
- @request.host = "localhost"
16
+ @request = ActionController::TestRequest.new
17
+ @response = ActionController::TestResponse.new
15
18
  end
16
19
 
17
20
  def test_auth_bob
18
21
  @request.session['return-to'] = "/bogus/location"
19
22
 
20
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
21
- assert_session_has "<%= singular_name %>"
23
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
24
+ assert_not_nil @response.session["<%= singular_name %>"]
22
25
 
23
26
  assert_equal @bob, @response.session["<%= singular_name %>"]
24
27
 
25
- assert_redirect_url "http://#{@request.host}/bogus/location"
28
+ assert_equal("http://#{@request.host}/bogus/location", @response.redirect_url)
26
29
  end
27
30
 
28
31
  def do_test_signup(bad_password, bad_email)
@@ -31,19 +34,19 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
31
34
  @request.session['return-to'] = "/bogus/location"
32
35
 
33
36
  if not bad_password and not bad_email
34
- post :signup, "<%= singular_name %>" => { "login" => "newbob", "password" => "newpassword", "password_confirmation" => "newpassword", "email" => "newbob@test.com" }
35
- assert_session_has_no "<%= singular_name %>"
36
-
37
- assert_redirect_url(@controller.url_for(:action => "login"))
37
+ post :signup, "<%= singular_name %>" => { "login" => "newbob@test.com", "password" => "newpassword", "password_confirmation" => "newpassword" }
38
+ assert_nil session["<%= singular_name %>"]
39
+
40
+ assert_equal(@controller.url_for(:action => "login"), @response.redirect_url)
38
41
  assert_equal 1, ActionMailer::Base.deliveries.size
39
42
  mail = ActionMailer::Base.deliveries[0]
40
43
  assert_equal "newbob@test.com", mail.to_addrs[0].to_s
41
- assert_match /login:\s+\w+\n/, mail.encoded
42
- assert_match /password:\s+\w+\n/, mail.encoded
44
+ # assert_match /login:\s+\w+\n/, mail.encoded
45
+ # assert_match /password:\s+\w+\n/, mail.encoded
43
46
  mail.encoded =~ /key=(.*?)"/
44
47
  key = $1
45
48
 
46
- <%= singular_name %> = <%= class_name %>.find_by_email("newbob@test.com")
49
+ <%= singular_name %> = <%= class_name %>.find_by_login("newbob@test.com")
47
50
  assert_not_nil <%= singular_name %>
48
51
  assert_equal 0, <%= singular_name %>.verified
49
52
 
@@ -51,32 +54,33 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
51
54
  Time.advance_by_days = 1
52
55
  get :welcome, "<%= singular_name %>"=> { "id" => "#{<%= singular_name %>.id}" }, "key" => "#{key}"
53
56
  Time.advance_by_days = 0
54
- <%= singular_name %> = <%= class_name %>.find_by_email("newbob@test.com")
57
+ <%= singular_name %> = <%= class_name %>.find_by_login("newbob@test.com")
55
58
  assert_equal 0, <%= singular_name %>.verified
56
59
 
57
60
  # Then a bogus key.
58
61
  get :welcome, "<%= singular_name %>"=> { "id" => "#{<%= singular_name %>.id}" }, "key" => "boguskey"
59
- <%= singular_name %> = <%= class_name %>.find_by_email("newbob@test.com")
62
+ <%= singular_name %> = <%= class_name %>.find_by_login("newbob@test.com")
60
63
  assert_equal 0, <%= singular_name %>.verified
61
64
 
62
65
  # Now the real one.
63
66
  get :welcome, "<%= singular_name %>"=> { "id" => "#{<%= singular_name %>.id}" }, "key" => "#{key}"
64
- <%= singular_name %> = <%= class_name %>.find_by_email("newbob@test.com")
67
+ <%= singular_name %> = <%= class_name %>.find_by_login("newbob@test.com")
65
68
  assert_equal 1, <%= singular_name %>.verified
66
69
 
67
- post :login, "<%= singular_name %>" => { "login" => "newbob", "password" => "newpassword" }
68
- assert_session_has "<%= singular_name %>"
70
+ post :login, "<%= singular_name %>" => { "login" => "newbob@test.com", "password" => "newpassword" }
71
+ assert_not_nil session["<%= singular_name %>"]
69
72
  get :logout
70
73
  elsif bad_password
71
- post :signup, "<%= singular_name %>" => { "login" => "newbob", "password" => "bad", "password_confirmation" => "bad", "email" => "newbob@test.com" }
72
- assert_session_has_no "<%= singular_name %>"
73
- assert_invalid_column_on_record "<%= singular_name %>", "password"
74
- assert_success
74
+ post :signup, "<%= singular_name %>" => { "login" => "newbob@test.com", "password" => "bad", "password_confirmation" => "bad"}
75
+ assert_nil session["<%= singular_name %>"]
76
+ assert(find_record_in_template("<%= singular_name %>").errors.invalid?(:password))
77
+
78
+ assert_response(:success)
75
79
  assert_equal 0, ActionMailer::Base.deliveries.size
76
80
  elsif bad_email
77
81
  ActionMailer::Base.inject_one_error = true
78
- post :signup, "<%= singular_name %>" => { "login" => "newbob", "password" => "newpassword", "password_confirmation" => "newpassword", "email" => "newbob@test.com" }
79
- assert_session_has_no "<%= singular_name %>"
82
+ post :signup, "<%= singular_name %>" => { "login" => "newbob@test.com", "password" => "newpassword", "password_confirmation" => "newpassword" }
83
+ assert_nil session["<%= singular_name %>"]
80
84
  assert_equal 0, ActionMailer::Base.deliveries.size
81
85
  else
82
86
  # Invalid test case
@@ -85,14 +89,14 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
85
89
  end
86
90
 
87
91
  def test_edit
88
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
89
- assert_session_has "<%= singular_name %>"
92
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
93
+ assert_not_nil session["<%= singular_name %>"]
90
94
 
91
95
  post :edit, "<%= singular_name %>" => { "firstname" => "Bob", "form" => "edit" }
92
- assert_equal @response.session['<%= singular_name %>'].firstname, "Bob"
96
+ assert_equal @response.session["<%= singular_name %>"].firstname, "Bob"
93
97
 
94
98
  post :edit, "<%= singular_name %>" => { "firstname" => "", "form" => "edit" }
95
- assert_equal @response.session['<%= singular_name %>'].firstname, ""
99
+ assert_equal @response.session["<%= singular_name %>"].firstname, ""
96
100
 
97
101
  get :logout
98
102
  end
@@ -101,41 +105,41 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
101
105
  ActionMailer::Base.deliveries = []
102
106
 
103
107
  # Immediate delete
104
- post :login, "<%= singular_name %>" => { "login" => "deletebob1", "password" => "alongtest" }
105
- assert_session_has "<%= singular_name %>"
108
+ post :login, "<%= singular_name %>" => { "login" => "deletebob1@test.com", "password" => "alongtest" }
109
+ assert_not_nil session["<%= singular_name %>"]
106
110
 
107
111
  <%= class_name %>System::CONFIG[:delayed_delete] = false
108
112
  post :edit, "<%= singular_name %>" => { "form" => "delete" }
109
113
  assert_equal 1, ActionMailer::Base.deliveries.size
110
114
 
111
- assert_session_has_no "<%= singular_name %>"
112
- post :login, "<%= singular_name %>" => { "login" => "deletebob1", "password" => "alongtest" }
113
- assert_session_has_no "<%= singular_name %>"
115
+ assert_nil session["<%= singular_name %>"]
116
+ post :login, "<%= singular_name %>" => { "login" => "deletebob1@test.com", "password" => "alongtest" }
117
+ assert_nil session["<%= singular_name %>"]
114
118
 
115
119
  # Now try delayed delete
116
120
  ActionMailer::Base.deliveries = []
117
121
 
118
- post :login, "<%= singular_name %>" => { "login" => "deletebob2", "password" => "alongtest" }
119
- assert_session_has "<%= singular_name %>"
122
+ post :login, "<%= singular_name %>" => { "login" => "deletebob2@test.com", "password" => "alongtest" }
123
+ assert_not_nil session["<%= singular_name %>"]
120
124
 
121
125
  <%= class_name %>System::CONFIG[:delayed_delete] = true
122
126
  post :edit, "<%= singular_name %>" => { "form" => "delete" }
123
127
  assert_equal 1, ActionMailer::Base.deliveries.size
124
128
  mail = ActionMailer::Base.deliveries[0]
125
- mail.encoded =~ /<%= singular_name%>\[id\]=(.*?)&key=(.*?)"/
129
+ mail.encoded =~ /<%= singular_name %>\[id\]=(.*?)&key=(.*?)"/
126
130
  id = $1
127
131
  key = $2
128
132
  post :restore_deleted, "<%= singular_name %>" => { "id" => "#{id}" }, "key" => "badkey"
129
- assert_session_has_no "<%= singular_name %>"
133
+ assert_nil session["<%= singular_name %>"]
130
134
 
131
135
  # Advance the time past the delete date
132
136
  Time.advance_by_days = <%= class_name %>System::CONFIG[:delayed_delete_days]
133
137
  post :restore_deleted, "<%= singular_name %>" => { "id" => "#{id}" }, "key" => "#{key}"
134
- assert_session_has_no "<%= singular_name %>"
135
- Time.advance_by_days = 0
138
+ assert_nil session["<%= singular_name %>"]
136
139
 
140
+ Time.advance_by_days = 0
137
141
  post :restore_deleted, "<%= singular_name %>" => { "id" => "#{id}" }, "key" => "#{key}"
138
- assert_session_has "<%= singular_name %>"
142
+ assert_not_nil session["<%= singular_name %>"]
139
143
  get :logout
140
144
  end
141
145
 
@@ -148,20 +152,20 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
148
152
  def do_change_password(bad_password, bad_email)
149
153
  ActionMailer::Base.deliveries = []
150
154
 
151
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
152
- assert_session_has "<%= singular_name %>"
155
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
156
+ assert_not_nil session["<%= singular_name %>"]
153
157
 
154
158
  if not bad_password and not bad_email
155
159
  post :change_password, "<%= singular_name %>" => { "password" => "changed_password", "password_confirmation" => "changed_password" }
156
160
  assert_equal 1, ActionMailer::Base.deliveries.size
157
161
  mail = ActionMailer::Base.deliveries[0]
158
162
  assert_equal "bob@test.com", mail.to_addrs[0].to_s
159
- assert_match /login:\s+\w+\n/, mail.encoded
160
- assert_match /password:\s+\w+\n/, mail.encoded
163
+ # assert_match /login:\s+\w+\n/, mail.encoded
164
+ # assert_match /password:\s+\w+\n/, mail.encoded
161
165
  elsif bad_password
162
166
  post :change_password, "<%= singular_name %>" => { "password" => "bad", "password_confirmation" => "bad" }
163
- assert_invalid_column_on_record "<%= singular_name %>", "password"
164
- assert_success
167
+ assert(find_record_in_template("<%= singular_name %>").errors.invalid?(:password))
168
+ assert_response(:success)
165
169
  assert_equal 0, ActionMailer::Base.deliveries.size
166
170
  elsif bad_email
167
171
  ActionMailer::Base.inject_one_error = true
@@ -173,24 +177,28 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
173
177
  end
174
178
 
175
179
  get :logout
176
- assert_session_has_no "<%= singular_name %>"
180
+ assert_nil session["<%= singular_name %>"]
177
181
 
178
182
  if not bad_password and not bad_email
179
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "changed_password" }
180
- assert_session_has "<%= singular_name %>"
183
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "changed_password" }
184
+ assert_not_nil session["<%= singular_name %>"]
181
185
  post :change_password, "<%= singular_name %>" => { "password" => "atest", "password_confirmation" => "atest" }
182
186
  get :logout
183
187
  end
184
188
 
185
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
186
- assert_session_has "<%= singular_name %>"
189
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
190
+ assert_not_nil session["<%= singular_name %>"]
187
191
 
188
192
  get :logout
189
193
  end
190
194
 
191
- def test_change_password
195
+ def test_change_password0
192
196
  do_change_password(false, false)
197
+ end
198
+ def test_change_password1
193
199
  do_change_password(true, false)
200
+ end
201
+ def test_change_password2
194
202
  do_change_password(false, true)
195
203
  end
196
204
 
@@ -198,17 +206,17 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
198
206
  ActionMailer::Base.deliveries = []
199
207
 
200
208
  if logged_in
201
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
202
- assert_session_has "<%= singular_name %>"
209
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
210
+ assert_not_nil session["<%= singular_name %>"]
203
211
  end
204
212
 
205
213
  @request.session['return-to'] = "/bogus/location"
206
214
  if not bad_address and not bad_email
207
- post :forgot_password, "<%= singular_name %>" => { "email" => "bob@test.com" }
215
+ post :forgot_password, "<%= singular_name %>" => { "login" => "bob@test.com" }
208
216
  password = "anewpassword"
209
217
  if logged_in
210
218
  assert_equal 0, ActionMailer::Base.deliveries.size
211
- assert_redirect_url(@controller.url_for(:action => "change_password"))
219
+ assert_equal(@controller.url_for(:action => "change_password"), @response.redirect_url)
212
220
  post :change_password, "<%= singular_name %>" => { "password" => "#{password}", "password_confirmation" => "#{password}" }
213
221
  else
214
222
  assert_equal 1, ActionMailer::Base.deliveries.size
@@ -218,15 +226,15 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
218
226
  id = $1
219
227
  key = $2
220
228
  post :change_password, "<%= singular_name %>" => { "password" => "#{password}", "password_confirmation" => "#{password}", "id" => "#{id}" }, "key" => "#{key}"
221
- assert_session_has "<%= singular_name %>"
229
+ assert_not_nil session["<%= singular_name %>"]
222
230
  get :logout
223
231
  end
224
232
  elsif bad_address
225
- post :forgot_password, "<%= singular_name %>" => { "email" => "bademail@test.com" }
233
+ post :forgot_password, "<%= singular_name %>" => { "login" => "bademail@test.com" }
226
234
  assert_equal 0, ActionMailer::Base.deliveries.size
227
235
  elsif bad_email
228
236
  ActionMailer::Base.inject_one_error = true
229
- post :forgot_password, "<%= singular_name %>" => { "email" => "bob@test.com" }
237
+ post :forgot_password, "<%= singular_name %>" => { "login" => "bob@test.com" }
230
238
  assert_equal 0, ActionMailer::Base.deliveries.size
231
239
  else
232
240
  # Invalid test case
@@ -237,18 +245,18 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
237
245
  if logged_in
238
246
  get :logout
239
247
  else
240
- assert_redirect_url(@controller.url_for(:action => "login"))
248
+ assert_equal(@controller.url_for(:action => "login"), @response.redirect_url)
241
249
  end
242
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "#{password}" }
250
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "#{password}" }
243
251
  else
244
252
  # Okay, make sure the database did not get changed
245
253
  if logged_in
246
254
  get :logout
247
255
  end
248
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
256
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
249
257
  end
250
258
 
251
- assert_session_has "<%= singular_name %>"
259
+ assert_not_nil session["<%= singular_name %>"]
252
260
 
253
261
  # Put the old settings back
254
262
  if not bad_address and not bad_email
@@ -268,35 +276,46 @@ class <%= class_name %>ControllerTest < Test::Unit::TestCase
268
276
  def test_bad_signup
269
277
  @request.session['return-to'] = "/bogus/location"
270
278
 
271
- post :signup, "<%= singular_name %>" => { "login" => "newbob", "password" => "newpassword", "password_confirmation" => "wrong" }
272
- assert_invalid_column_on_record "<%= singular_name %>", "password"
273
- assert_success
274
-
279
+ post :signup, "<%= singular_name %>" => { "login" => "newbob@test.com", "password" => "newpassword", "password_confirmation" => "wrong" }
280
+ assert(find_record_in_template("<%= singular_name %>").errors.invalid?(:password))
281
+ assert_response(:success)
282
+
275
283
  post :signup, "<%= singular_name %>" => { "login" => "yo", "password" => "newpassword", "password_confirmation" => "newpassword" }
276
- assert_invalid_column_on_record "<%= singular_name %>", "login"
277
- assert_success
284
+ assert(find_record_in_template("<%= singular_name %>").errors.invalid?(:login))
285
+ assert_response(:success)
278
286
 
279
287
  post :signup, "<%= singular_name %>" => { "login" => "yo", "password" => "newpassword", "password_confirmation" => "wrong" }
280
- assert_invalid_column_on_record "<%= singular_name %>", ["login", "password"]
281
- assert_success
288
+ assert(find_record_in_template("<%= singular_name %>").errors.invalid?(:login))
289
+ assert(find_record_in_template("<%= singular_name %>").errors.invalid?(:password))
290
+ assert_response(:success)
282
291
  end
283
292
 
284
293
  def test_invalid_login
285
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "not_correct" }
294
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "not_correct" }
286
295
 
287
- assert_session_has_no "<%= singular_name %>"
296
+ assert_nil session["<%= singular_name %>"]
288
297
 
289
- assert_template_has "login"
298
+ assert(@response.has_template_object?("login"))
290
299
  end
291
300
 
292
301
  def test_login_logoff
293
302
 
294
- post :login, "<%= singular_name %>" => { "login" => "bob", "password" => "atest" }
295
- assert_session_has "<%= singular_name %>"
303
+ post :login, "<%= singular_name %>" => { "login" => "bob@test.com", "password" => "atest" }
304
+ assert_not_nil session["<%= singular_name %>"]
296
305
 
297
306
  get :logout
298
- assert_session_has_no "<%= singular_name %>"
307
+ assert_nil session["<%= singular_name %>"]
299
308
 
300
309
  end
301
-
310
+
311
+ # deprecated assertions
312
+ def find_record_in_template(key = nil)
313
+ assert_not_nil assigns(key)
314
+ record = @response.template_objects[key]
315
+
316
+ assert_not_nil(record)
317
+ assert_kind_of ActiveRecord::Base, record
318
+
319
+ return record
320
+ end
302
321
  end
data/templates/done ADDED
@@ -0,0 +1,28 @@
1
+ rm -fr saltedloginfix2/ ; rails -d mysql saltedloginfix2; cd saltedloginfix2/ ; script/generate salted_login User Localization; mysql -u root -pDelphes59 -e "create database saltedloginfix2_development"; mysql -u root -pDelphes59 -e "create database saltedloginfix2_test"; rake test ; cd ..
2
+
3
+ _view_edit.rhtml # remove email
4
+ _view_password.rhtml
5
+ controller
6
+ controller_test
7
+ helper
8
+ login_environment
9
+ login_system
10
+ mock_notify
11
+ mock_time
12
+ notify
13
+ notify_change_password
14
+ notify_delete
15
+ notify_forgot_password
16
+ notify_pending_delete
17
+ notify_signup
18
+ user.rb
19
+ user_model.erbsql
20
+ user_test.rb
21
+ users.yml
22
+ view_change_password
23
+ view_edit
24
+ view_forget_password
25
+ view_login
26
+ view_logout
27
+ view_signup
28
+ view_welcome
data/templates/helper.rb CHANGED
@@ -69,12 +69,12 @@ module <%= class_name %>Helper
69
69
  opts = DEFAULT_HEAD_OPTIONS.dup
70
70
  opts.update(options.symbolize_keys)
71
71
  s = "<h3>#{label}</h3>"
72
- if @flash['notice'] and not opts[:notice].nil? and opts[:notice]
73
- notice = "<div><p>#{@flash['notice']}</p></div>"
72
+ if flash['notice'] and not opts[:notice].nil? and opts[:notice]
73
+ notice = "<div><p>#{flash['notice']}</p></div>"
74
74
  s = s + notice
75
75
  end
76
- if @flash['message'] and not opts[:message].nil? and opts[:message]
77
- message = "<div id=\"ErrorExplanation\"><p>#{@flash['message']}</p></div>"
76
+ if flash['message'] and not opts[:message].nil? and opts[:message]
77
+ message = "<div id=\"ErrorExplanation\"><p>#{flash['message']}</p></div>"
78
78
  s = s + message
79
79
  end
80
80
  if not opts[:error].nil? and opts[:error]
@@ -97,9 +97,15 @@ EOL
97
97
  l(:"#{@controller.controller_name}_#{name}_message")
98
98
  end
99
99
 
100
- def start_form_tag_helper(options = {})
100
+ # from http://devblog.famundo.com/articles/2007/03/28/lost-in-binding-adventures-in-ruby-metaprogramming
101
+ def form_tag_helper(options = {}, &block)
101
102
  url = url_for(:action => "#{@controller.action_name}")
102
- "#{self.send(:start_form_tag, url, options)}"
103
+ _erbout = eval('_erbout', block)
104
+ form_tag(url, options) do
105
+ eval "_erbout = %q[#{_erbout}]"
106
+ yield
107
+ end
108
+ eval "_erbout = %q[#{_erbout}]", block
103
109
  end
104
110
 
105
111
  def attributes(hash)
@@ -44,7 +44,7 @@ module <%= class_name %>System
44
44
  return true
45
45
  end
46
46
 
47
- if <%= singular_name %>? and authorize?(@session['<%= singular_name %>'])
47
+ if <%= singular_name %>? and authorize?(session['<%= singular_name %>'])
48
48
  return true
49
49
  end
50
50
 
@@ -69,30 +69,30 @@ module <%= class_name %>System
69
69
  # store current uri in the session.
70
70
  # we can return to this location by calling return_location
71
71
  def store_location
72
- @session['return-to'] = @request.request_uri
72
+ session['return-to'] = request.request_uri
73
73
  end
74
74
 
75
75
  # move to the last store_location call or to the passed default one
76
76
  def redirect_back_or_default(default)
77
- if @session['return-to'].nil?
77
+ if session['return-to'].nil?
78
78
  redirect_to default
79
79
  else
80
- redirect_to_url @session['return-to']
81
- @session['return-to'] = nil
80
+ redirect_to(url_for(session['return-to']))
81
+ session['return-to'] = nil
82
82
  end
83
83
  end
84
84
 
85
85
  def <%= singular_name %>?
86
86
  # First, is the user already authenticated?
87
- return true if not @session['<%= singular_name %>'].nil?
87
+ return true if not session['<%= singular_name %>'].nil?
88
88
 
89
89
  # If not, is the user being authenticated by a token?
90
- return false if not @params['<%= singular_name %>']
91
- id = @params['<%= singular_name %>']['id']
92
- key = @params['key']
90
+ return false if not params['<%= singular_name %>']
91
+ id = params['<%= singular_name %>']['id']
92
+ key = params['key']
93
93
  if id and key
94
- @session['<%= singular_name %>'] = <%= class_name %>.authenticate_by_token(id, key)
95
- return true if not @session['<%= singular_name %>'].nil?
94
+ session['<%= singular_name %>'] = <%= class_name %>.authenticate_by_token(id, key)
95
+ return true if not session['<%= singular_name %>'].nil?
96
96
  end
97
97
 
98
98
  # Everything failed
@@ -0,0 +1,27 @@
1
+ class Create<%= class_name.pluralize %> < ActiveRecord::Migration
2
+ def self.up
3
+ create= <<END_OF_STRING
4
+ CREATE TABLE <%= plural_name %> (
5
+ id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
6
+ login VARCHAR(80) NOT NULL,
7
+ salted_password VARCHAR(40) NOT NULL,
8
+ firstname VARCHAR(40),
9
+ lastname VARCHAR(40),
10
+ salt CHAR(40) NOT NULL,
11
+ verified INT default 0,
12
+ role VARCHAR(40) default NULL,
13
+ security_token CHAR(40) default NULL,
14
+ token_expiry DATETIME default NULL,
15
+ created_at DATETIME default NULL,
16
+ updated_at DATETIME default NULL,
17
+ logged_in_at DATETIME default NULL,
18
+ deleted INT default 0,
19
+ delete_after DATETIME default NULL
20
+ ) TYPE=InnoDB DEFAULT CHARSET=utf8;
21
+ END_OF_STRING
22
+ execute create
23
+ end
24
+ def self.down
25
+ drop_table :<%= plural_name %>
26
+ end
27
+ end
data/templates/notify.rb CHANGED
@@ -11,6 +11,7 @@ class <%= class_name %>Notify < ActionMailer::Base
11
11
  @body["password"] = password
12
12
  @body["url"] = url || <%= class_name %>System::CONFIG[:app_url].to_s
13
13
  @body["app_name"] = <%= class_name %>System::CONFIG[:app_name].to_s
14
+ @body = render_message("<%= singular_name %>_notify/signup", @body)
14
15
  end
15
16
 
16
17
  def forgot_password(<%= singular_name %>, url=nil)
@@ -24,6 +25,7 @@ class <%= class_name %>Notify < ActionMailer::Base
24
25
  @body["login"] = <%= singular_name %>.login
25
26
  @body["url"] = url || <%= class_name %>System::CONFIG[:app_url].to_s
26
27
  @body["app_name"] = <%= class_name %>System::CONFIG[:app_name].to_s
28
+ @body = render_message("<%= singular_name %>_notify/forgot_password", @body)
27
29
  end
28
30
 
29
31
  def change_password(<%= singular_name %>, password, url=nil)
@@ -38,6 +40,7 @@ class <%= class_name %>Notify < ActionMailer::Base
38
40
  @body["password"] = password
39
41
  @body["url"] = url || <%= class_name %>System::CONFIG[:app_url].to_s
40
42
  @body["app_name"] = <%= class_name %>System::CONFIG[:app_name].to_s
43
+ @body = render_message("<%= singular_name %>_notify/change_password", @body)
41
44
  end
42
45
 
43
46
  def pending_delete(<%= singular_name %>, url=nil)
@@ -51,6 +54,7 @@ class <%= class_name %>Notify < ActionMailer::Base
51
54
  @body["url"] = url || <%= class_name %>System::CONFIG[:app_url].to_s
52
55
  @body["app_name"] = <%= class_name %>System::CONFIG[:app_name].to_s
53
56
  @body["days"] = <%= class_name %>System::CONFIG[:delayed_delete_days].to_s
57
+ @body = render_message("<%= singular_name %>_notify/pending_delete", @body)
54
58
  end
55
59
 
56
60
  def delete(<%= singular_name %>, url=nil)
@@ -63,10 +67,11 @@ class <%= class_name %>Notify < ActionMailer::Base
63
67
  @body["name"] = "#{<%= singular_name %>.firstname} #{<%= singular_name %>.lastname}"
64
68
  @body["url"] = url || <%= class_name %>System::CONFIG[:app_url].to_s
65
69
  @body["app_name"] = <%= class_name %>System::CONFIG[:app_name].to_s
70
+ @body = render_message("<%= singular_name %>_notify/delete", @body)
66
71
  end
67
72
 
68
73
  def setup_email(<%= singular_name %>)
69
- @recipients = "#{<%= singular_name %>.email}"
74
+ @recipients = "#{<%= singular_name %>.login}"
70
75
  @from = <%= class_name %>System::CONFIG[:email_from].to_s
71
76
  @subject = "[#{<%= class_name %>System::CONFIG[:app_name]}] "
72
77
  @sent_on = Time.now
@@ -2,9 +2,4 @@ Dear <%%= @name %>,
2
2
 
3
3
  At your request, <%%= @app_name %> has changed your password. If it was not at your request, then you should be aware that someone has access to your account and requested this change.
4
4
 
5
- Your new login credentials are:
6
-
7
- login: <%%= @login %>
8
- password: <%%= @password %>
9
-
10
5
  <%%= @url %>
@@ -3,7 +3,6 @@ Welcome to <%%= @app_name %>, <%%= @name %>.
3
3
  Your login credentials are:
4
4
 
5
5
  login: <%%= @login %>
6
- password: <%%= @password %>
7
6
 
8
7
  Please click on the following link to confirm your registration:
9
8
 
data/templates/user.rb CHANGED
@@ -11,15 +11,18 @@ class <%= class_name %> < ActiveRecord::Base
11
11
  end
12
12
 
13
13
  def self.authenticate(login, pass)
14
- u = find_first(["login = ? AND verified = 1 AND deleted = 0", login])
15
- return nil if u.nil?
16
- find_first(["login = ? AND salted_password = ? AND verified = 1", login, salted_password(u.salt, hashed(pass))])
14
+ begin
15
+ u = find(:first, :conditions => ["login = ? AND verified = 1 AND deleted = 0", login])
16
+ return find(:first, :conditions => ["login = ? AND salted_password = ? AND verified = 1", login, salted_password(u.salt, hashed(pass))])
17
+ rescue
18
+ return nil
19
+ end
17
20
  end
18
21
 
19
22
  def self.authenticate_by_token(id, token)
20
23
  # Allow logins for deleted accounts, but only via this method (and
21
24
  # not the regular authenticate call)
22
- u = find_first(["id = ? AND security_token = ?", id, token])
25
+ u = find(:first, :conditions => ["id = ? AND security_token = ?", id, token])
23
26
  return nil if u.nil? or u.token_expired?
24
27
  return nil if false == u.update_expiry
25
28
  u
@@ -104,7 +107,6 @@ class <%= class_name %> < ActiveRecord::Base
104
107
  validates_presence_of :login, :on => :create
105
108
  validates_length_of :login, :within => 3..40, :on => :create
106
109
  validates_uniqueness_of :login, :on => :create
107
- validates_uniqueness_of :email, :on => :create
108
110
 
109
111
  validates_presence_of :password, :if => :validate_password?
110
112
  validates_confirmation_of :password, :if => :validate_password?
@@ -2,7 +2,6 @@ CREATE TABLE <%= plural_name %> (
2
2
  id <%%= @pk %>,
3
3
  login VARCHAR(80) NOT NULL,
4
4
  salted_password VARCHAR(40) NOT NULL,
5
- email VARCHAR(60) NOT NULL,
6
5
  firstname VARCHAR(40) default NULL,
7
6
  lastname VARCHAR(40) default NULL,
8
7
  salt CHAR(40) NOT NULL,