Rick Olsen (technoweenie) has some plugins that already do this stuff.
Tom
[EMAIL PROTECTED] wrote:
Should I just write a plugin for this?
On 10/11/2006, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
Sorry about my incomplete post, I was in a serious hurry, off to a
company luncheon. So, here is the strategy I was hoping to convey.
First, I wouldn't put it in the User model personally, simply because it
doesn't really have anything to do with a User in the conventional OO
paradigm. It would be useful to have an method is_verified? that checks
a :verified attribute though. With that said, here's an updated
description of UserVerification (i prefer it to UserVerification for
disambiguation with common rails terms):
1. user_verification migration:
..
t.column :user_id, :integer # user id instead of username, id will not
change
t.column :hash, :string # SHA1 hash
t.column :salts, :text # serialized Array
t.column :created_at, :datetime
..
2. UserVerification model:
..
before_save :generate_hash
after_save :send_verification_email
after_destroy :make_user_valid
..
belongs_to :user
serialize :salts, Array
..
def user_valid?(hash_from_email)
(self.hash == hash_from_email)
end
..
protected
def generate_hash
self.hash = Digest::SHA1.hexdigest(self.salts.join)
end
..
def send_verification_email
... #send email to user with link:
domain.com/validate?hash=892he98hd...&[EMAIL PROTECTED]
end
..
def make_user_valid
...
self.user.verified = true
self.user.save
...
end
3. Then, when the user clicks the link in the email, you'll have a
verification method that says:
..
verify = UserVerification.find_by_hash(params[:hash])
if User.find_by_email(:params[:email]) == verify.user
verify.destroy # user becomes valid
end
..
Hope this helps/makes sense!!
-Jordan
On 10/11/2006, "Patrick Crowley" <[EMAIL PROTECTED]> wrote:
I'd prefer to keep this stuff in the User model, but I like the
serialization trick, Jordan.
Best,
Patrick
On Oct 11, 2006, at 12:22 PM, Nick Zadrozny wrote:
On 10/11/06, Nick Zadrozny <[EMAIL PROTECTED]> wrote:
For that second step, wouldn't you have to know or hardcode the
position of the username?
Wait, I'm an idiot. You have the username in the UserValidation
migration. And I'm increasingly not sure that those columns have to be
in a separate model from your User object in the first place. I think
I figured out my own questions :-)
--
Nick Zadrozny
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby
_______________________________________________
Sdruby mailing list
[email protected]
http://lists.sdruby.com/mailman/listinfo/sdruby