Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Model
- #Change a Users Password after they forgot it.
- def self.reset_pass ( username , user_email)
- user = User.find(:first, :conditions => ['username = ? and email = ?', username, user_email])
- if user.nil?
- return nil
- else
- #Send Reset Pass Email
- new_pass = User.random_string(10)
- user.password = new_pass
- user.password_confirmation = new_pass
- if user.save
- Notifications.deliver_reset_password( user )
- else
- return nil
- end
- end
- end
- ## Mailer
- #Notifies the user of their new password when it is changed.
- def reset_password( c_user )
- @subject = '[Kollaborate] Your password has been reset'
- @body["username"] = c_user.username || ""
- @body["email"] = c_user.email || ""
- @body["password"] = c_user.password || "email support"
- @recipients = c_user.email || "sutto@sutto.net"
- @from = 'kollaborate@ninjahideout.com'
- @sent_on = Time.now
- @headers = {}
- end
- ##Test
- #Check Reset Password
- def test_reset_password
- #First, try a false user
- assert_nil User.reset_pass( "asoihj", "eropwuir" )
- #Next, one which *should* work
- user = users(:admin_user)
- old_pass = user.password_hashed
- assert User.reset_pass( "sutto", "sutto@sutto.net" )
- user = User.find(:first, :conditions => ['username = ?', "sutto"])
- assert_not_equal old_pass, user.password_hashed
- end
- ##Rake output:
- 1) Error:
- test_reset_password(NotificationsTest):
- NoMethodError: undefined method `username' for Mon Feb 05 22:12:31 +0900 2007:Ti
- me
- C:/ks/Kollaborate/site/trunk/config/../app/models/notifications.rb:6:in `res
- et_password'
- c:/ruby/lib/ruby/gems/1.8/gems/actionmailer-1.3.1/lib/action_mailer/base.rb:
- 372:in `send'
- c:/ruby/lib/ruby/gems/1.8/gems/actionmailer-1.3.1/lib/action_mailer/base.rb:
- 372:in `create!'
- c:/ruby/lib/ruby/gems/1.8/gems/actionmailer-1.3.1/lib/action_mailer/base.rb:
- 365:in `initialize'
- c:/ruby/lib/ruby/gems/1.8/gems/actionmailer-1.3.1/lib/action_mailer/base.rb:
- 324:in `new'
- c:/ruby/lib/ruby/gems/1.8/gems/actionmailer-1.3.1/lib/action_mailer/base.rb:
- 324:in `method_missing'
- ./test/unit/notifications_test.rb:24:in `test_reset_password'
Add Comment
Please, Sign In to add comment